Para crear un bot�n, se ejemplariza una de las muchas subclases de la clase AbstractButton. Esta secci�n explica el API b�sico que define la clase AbstractButton -- y lo que todos los botones Swing tienen en com�n. Como la clase JButton desciende de AbstractButton define un peque�o API p�blico adicional, est� p�gina lo utiliza para ver c�mo funcionan los botones.
Nota: En Swing 1.0.2, los botones ignoraban sus mnem�nicos (teclas aceleradoras). Este error se corrigi� en Swing 1.0.3. |
La siguiente tabla muestra las subclases de AbstractButton definidas en Swing que podemos utilizar.
Clase | Sumario | D�nde se Describe |
---|---|---|
JButton | Un bot�n com�n | En esta secci�n. |
JCheckBox | Un checkbox t�pico | C�mo usar CheckBox |
JRadioButton | Un bot�n de r�dio de un grupo. | C�mo usar RadioButton |
JMenuItem | Un �tem de un men�. | C�mo usar Menu |
JToggleButton | Implementa la funcionalidad heredada de JCheckBox y JRadioButton. | En ning�n lugar de este tutorial. |
Nota:Si queremos juntar un grupo de botones dentro de una fila o una columna deber�amos chequear C�mo usar toolbar. |
Aqu� tienes una imagen de una aplicaci�n que muestra tres botones.

Intenta esto:
|
Como muestra el ejemplo ButtonDemo, un bot�n Swing puede mostrar tanto texto como una imagen. En ButtonDemo, cada bot�n tiene su texto en un sitio diferente. La letra subrayada de cada texto de bot�n muestra el mnem�nico -- la tecla alternativa -- para cada bot�n.
Cuando un bot�n se desactiva, le aspecto y comportamiento genera autom�ticamente la apariencia de bot�n desactivado. Sin embargo, podr�amos proporcionar una imagen para que substituya la imagen normal. Por ejemplo, podr�a proporcionar versiones en gris de las imagenes utilizadas en los botones de la derecha y de la izquierda.
C�mo se implementa el manejo de eventos depende del tipo de bot�n utilizado y de c�mo se utiliza. Generalmente, implementamos un action listener, que es notificado cada vez que el usuario pulsa el bot�n, Para un checkbox normalmente se utiliza un item listener, que es notificado cuando el checkbox es seleccionado o deseleccionado.
Abajo podemos ver el c�digo deButtonDemo.java que crea los botones del ejemplo anterior y reacciona a las pulsaciones de los botones. El c�digo en negrita es el c�digo que permanecer�a si los botones no tuvieran im�genes.
//In initialization code: ImageIcon leftButtonIcon = new ImageIcon("images/LEFT.gif"); ImageIcon middleButtonIcon = new ImageIcon("images/middle.gif"); ImageIcon LEFTButtonIcon = new ImageIcon("images/left.gif"); b1 = new JButton("Disable middle button", leftButtonIcon); b1.setVerticalTextPosition(AbstractButton.CENTER); b1.setHorizontalTextPosition(AbstractButton.LEFT); b1.setMnemonic('d'); b1.setActionCommand("disable"); b2 = new JButton("Middle button", middleButtonIcon); b2.setVerticalTextPosition(AbstractButton.BOTTOM); b2.setHorizontalTextPosition(AbstractButton.CENTER); b2.setMnemonic('m'); b3 = new JButton("Enable middle button", LEFTButtonIcon); //Use the default text position of CENTER, LEFT. b3.setMnemonic('e'); b3.setActionCommand("enable"); b3.setEnabled(false); //Listen for actions on buttons 1 and 3. b1.addActionListener(this); b3.addActionListener(this); . . . } public void actionPerformed(java.awt.event.ActionEvent e) { if (e.getActionCommand().equals("disable")) { b2.setEnabled(false); b1.setEnabled(false); b3.setEnabled(true); } else { b2.setEnabled(true); b1.setEnabled(true); b3.setEnabled(false); } }
�El API Button
Las siguientes tablas listan los m�todos y constructores m�s utilizados de AbstractButton y JButton. Podemos ver la mayor�a de este API jugando con el panel de botones del ejemplo SwingSet que forma parte de la versi�n Swing.
El API para utilizar botones se divide en tres categorias.
�Seleccionar u Obtener el Contenido de un Bot�n
M�todo o Constructor | Prop�sito |
---|---|
JButton(String, Icon)
JButton(String) JButton(Icon) JButton() |
Crea un ejemplar de JButton, lo inicializa para tener el texto/imagen especificado. |
void setText(String)
String getText() |
Selecciona u obtiene el texto mostrado en el bot�n. |
void setIcon(Icon)
Icon getIcon() |
Selecciona u obtiene la imagen mostrada por el bot�n cuando no est� seleccionado o pulsado. |
void setDisabledIcon(Icon)
Icon getDisabledIcon() |
Selecciona u obtiene la imagen mostrada por el bot�n cuando est� desactivado. Si no se especifica una imagen, el aspecto y comportamiento crea una por defecto. |
void setPressedIcon(Icon)
Icon getPressedIcon() |
Seleccion u obtiene la imagen mostrada por el bot�n cuando est� puslado. |
void setSelectedIcon(Icon)
Icon getSelectedIcon() void setDisabledSelectedIcon(Icon) Icon getDisabledSelectedIcon() |
Selecciona u obtiene la imagen mostrada por el bot�n cuando est� seleccionado. Si no se especifica una imagen de bot�n desactivado seleccionado, el aspecto y comportamiento crea una manipulando la imagen de seleccionado. |
setRolloverEnabled(boolean)
boolean getRolloverEnabled() void setRolloverIcon(Icon) Icon getRolloverIcon() void setRolloverSelectedIcon(Icon) Icon getRolloverSelectedIcon() |
Utiliza setRolloverEnabled(true) y setRolloverIcon(someIcon) para hacer que el bot�n muestre el icono especificado cuando el cursor pasa sobre �l. |
�Ajuste Fino de la Apariencia del Bot�n
M�todo o constructor | Prop�sito |
---|---|
void setHorizontalAlignment(int)
void setVerticalAlignment(int) int getHorizontalAlignment() int getVerticalAlignment() |
Selecciona u obtiene d�nde debe situarse el contenido del bot�n. La clase AbstractButton permite uno de los siguientes valores para alineamineto horizontal: LEFT, CENTER (por defecto), y LEFT. Para alineamiento vertical: TOP, CENTER (por defecto), y BOTTOM. |
void setHorizontalTextPosition(int)
void setVerticalTextPosition(int) int getHorizontalTextPosition() int getVerticalTextPosition() |
Selecciona u obtiene d�nde deber�a situarse el texto del bot�n con respecto a la imagen. La clase AbstractButton permite uno de los siguientes valores para alineamineto horizontal: LEFT, CENTER (por defecto), y LEFT. Para alineamiento vertical: TOP, CENTER (por defecto), y BOTTOM. |
void setMargin(Insets)
Insets getMargin() |
Selecciona u obtiene el n�mero de pixels entre el borde del bot�n y sus contenidos. |
void setFocusPainted(boolean)
boolean isFocusPainted() |
Selecciona u obtiene si el bot�n deber�a parecer diferente si obtiene el foco. |
void setBorderPainted(boolean)
boolean isBorderPainted() |
Selecciona u obtiene si el borde del bot�n deber�a dibujarse. |
�Implementar la Funcionalidad del Bot�n
M�todo o Constructor | Prop�sito |
---|---|
void setMnemonic(char)
char getMnemonic() |
Selecciona la tecla alternativa para pulsar el bot�n. |
void setActionCommand(String)
String getActionCommand(void) |
Selecciona u obtiene el nombre de la acci�n realizada por el bot�n. |
void addActionListener(ActionListener)
ActionListener removeActionListener() |
A�ade o elimina un objeto que escucha eventos action disparados por el bot�n. |
void addItemListener(ItemListener)
ItemListener removeItemListener() |
A�ade o elimina un objeto que escucha eventos items disparados por el bot�n. |
void setSelected(boolean)
boolean isSelected() |
Selecciona u obtiene si el bot�n est� seleccionado. Tiene sentido s�lo en botones que tienen un estado on/off, como los checkbox. |
void doClick()
void doClick(int) |
Program�ticamente realiza un "click". El argumento opcional especifica el tiempo (en milisegundos) que el bot�n deber�a estar pulsado. |