Swing y JFC (Java Foundation Classes)

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:
  1. Compila y ejecuta la aplicaci�n. El fichero fuente est� en ButtonDemo.java.

    Puedes ver Empezar con Swing si necesitas ayuda.

  2. Pulsa el bot�n izquierdo.

    Deshabalita el bot�n central (y a s� mismo, ya que no es necesario) y activa el bot�n derecho.

  3. Pulsa el bot�n derecho.

    Activa los botones central e izquierdo y se desactiva a a s� mismo.

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.

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP
ARTÍCULO ANTERIOR