2011-11-09 14 views
9

Sto creando una GUI Java utilizzando Swing con Eclipse e Window Builder Pro. Sto usando JButtons e JToggleButtons. Voglio cambiare lo stato del pulsante di commutazione da un altro pulsante.Modifica dello stato del pulsante di commutazione da un altro pulsante

enter image description here

Ad esempio, quando scatto la griglia chiara, tutti i pulsanti bistabili saranno 'non selezionati'.

Come posso fare questo? Quali sono i metodi che devo usare per attivare pulsanti e pulsanti?

risposta

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

Registrare un ActionListener nell'istanza JButton e assicurarsi di poter accedere ai pulsanti di attivazione in esso per manipolare il loro stato.

+0

Quale funzione del pulsante di commutazione cambia lo stato? –

+1

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

+3

Lo stato del pulsante può essere alternato usando 'doClick()' o imposta usando 'setSelected (booleano)'. Controlla i javadoc per l'effetto di ciascuno. –

4

Aggiungi actionListener al tuo JButton e nel metodo actionPerformed (ActionEvent) cambia lo stato di tutti i JToggleButtons. Assicurati che tutto il tuo JToggleButton sia accessibile con questo metodo. Un semplice esempio sarà ..

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

ero alla ricerca di questo, questo potrebbe aiutare qualcuno fuori

B1.setSelected(false); 

ho fatto un metodo che fanno tutto il mio tasto falso (deselezionare le levette quando lo volevo)

Problemi correlati