Botones Biestado (Toggle Buttons)
Los Botones Biestado derivan de los botones normales y son muy similares,
excepto que siempre están en uno de dos estados, alternándolos con un clic.
Puedan estar presionados, y cuando se vuelva a hacer clic, volverán a su estado
inicial, levantados. Se hace clic otra vez y volverán a estar presionados.
Los botones Biestado son la base para los botones de activación y los botones
de exclusión mútua, y por ello, muchas de las llamadas usadas con los botones
biestado son heredados por los botones de activación y los botones de exclusión
mútua. Volveremos a destacar este hecho cuando tratemos esos botones.
Creación de un nuevo botón biestado:
toggle_button = gtk.ToggleButton(label=None)
Como se puede imaginar, estas llamadas funcionan igual que las llamadas al
control de botón normal. Si no se especifica etiqueta el botón estará vacio. El
texto de la etiqueta se analiza para comprobar si contiene caracteres
mnemotécnicos con el prefijo '_'
Para obtener el estado de un botón biestado, incluyendo los botones de
exclusión mútua y los botones de activación, se utiliza el mecanismo del
ejemplo anterior. Así se comprueba el estado del biestado, llamando al
método get_active() del objeto botón biestado. La señal que nos interesa que
emiten los botones biestado (el botón biestado, el botón de activación y el botón
de exclusión mútua) es la señal "toggled". Para comprobar el estado de estos
botones, se configura un manejador de señales para capturar la señal toggled, y
se accede a los atributos del objeto para determinar su estad.
Jerarquía de herencia:
javax.swing
Class JToggleButton
java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.AbstractButton
javax.swing.JToggleButton
All Implemented Interfaces:
ImageObserver, ItemSelectable, MenuContainer, Serializable, Accessible, SwingConstants
Direct Known Subclasses:
JCheckBox, JRadioButton
ejemplo de uso:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class JToggle extends JFrame {
ButtonGroup grupo = new ButtonGroup();
JToggleButton boton = new JToggleButton("PRESIONAME");
JToggleButton opcionA = new JToggleButton("Opción A");
JToggleButton opcionB = new JToggleButton("Opción B");
JToggleButton opcionC = new JToggleButton("Opción C");
JLabel etiqueta = new JLabel(" PULSA EL BOTON PARA COMENZAR ");
public JToggle() {
super("El JToggleButton");
setLocation(100,100);
setSize(700,130);
setLayout(new GridLayout());
add(boton);
add(etiqueta);
grupo.add(opcionA);
grupo.add(opcionB);
grupo.add(opcionC);
add(opcionA);
add(opcionB);
add(opcionC);
boton.addItemListener(new ElListener());
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
class ElListener implements ItemListener {
public void itemStateChanged(ItemEvent evt) {
if (boton.isSelected()) {
boton.setBackground(Color.green);
etiqueta.setForeground(Color.blue);
etiqueta.setText("El botón esta activado");
} else {
boton.setBackground(Color.red);
etiqueta.setForeground(Color.black);
etiqueta.setText("El botón no esta activo");
public static void main(String[] arg) {
JOptionPane.showMessageDialog(null,"Un JToggleButton....\n");
JOptionPane.showMessageDialog(null,"By Carlitox ("+
"http://calitoxenlaweb.blogspot.com)");
JToggle app = new JToggle();
app.setVisible(true);