2011-11-09 52 views
9

Estoy creando una GUI de Java usando Swing con Eclipse y Window Builder Pro. Estoy usando JButtons y JToggleButtons. Quiero cambiar el estado del botón de alternar desde otro botón.Cambiar el estado del botón de alternar desde otro botón

enter image description here

Por ejemplo, al hacer clic en la cuadrícula clara, todos los botones de selección serán 'no seleccionado'.

¿Cómo puedo hacer esto? ¿Cuáles son los métodos que debo usar para alternar botones y botones?

Respuesta

5

toggleButton.setSelected(boolean b)

import java.awt.BorderLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.AbstractButton; 
import javax.swing.JFrame; 
import javax.swing.JToggleButton; 

public class JToggleButtonAction { 

    public static void main(String args[]) { 
     JFrame frame = new JFrame("Selecting Toggle"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     JToggleButton toggleButton = new JToggleButton("Toggle Button"); 
     final JToggleButton toggleButton1 = new JToggleButton("Another Toggle Button"); 
     ActionListener actionListener = new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent actionEvent) { 
       AbstractButton abstractButton = (AbstractButton) actionEvent.getSource(); 
       boolean selected = abstractButton.getModel().isSelected(); 
       System.out.println("Action - selected=" + selected + "\n"); 
       toggleButton1.setSelected(selected); 
      } 
     }; 
     toggleButton.addActionListener(actionListener); 
     frame.add(toggleButton, BorderLayout.NORTH); 
     frame.add(toggleButton1, BorderLayout.SOUTH); 
     frame.pack(); 
     frame.setVisible(true); 
    } 
} 
3

Registre ActionListener en la instancia y asegúrese de que puede acceder a los botones de alternar para manipular su estado.

+0

¿Qué función del botón de alternar cambia su estado? –

+1

Ver ['setSelected (false)'] (http://download.oracle.com/javase/6/docs/api/javax/swing/AbstractButton.html#setSelected%28boolean%29) – mre

+3

El estado del botón se puede alternar usando 'doClick()' o set usando 'setSelected (boolean)'. Compruebe los javadocs por el efecto de cada uno. –

4

Agregue actionListener a su JButton y en el método actionPerformed (ActionEvent) cambie el estado de todos los JToggleButtons. Asegúrese de tener acceso a todos los JToggleButton en este método. Un ejemplo sencillo será ..

JFrame frame = new JFrame("Panel image demo"); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setSize(400, 400); 
    frame.setLayout(new FlowLayout()); 

    final JToggleButton[] button = new JToggleButton[10]; 
    for (int i = 0; i < button.length; i++) { 
     button[i] = new JToggleButton("Toggle Us"); 
     frame.add(button[i]); 
    } 
    JButton jButton = new JButton("Toggle that button"); 
    jButton.addActionListener(new ActionListener() { 
     @Override 
     public void actionPerformed(ActionEvent e) { 
      for (JToggleButton jToggleButton : button) { 
       jToggleButton.setSelected(!jToggleButton.isSelected()); // <-- this will change the state of toggle button 
      } 
     } 
    }); 

    frame.add(jButton); 
    frame.setVisible(true); 
1

que estaba buscando esto, esto podría ayudar a alguien

B1.setSelected(false); 

hice un método que haga todo mi botón falsa (Deseleccione los conmutadores cuando lo desee)

Cuestiones relacionadas