2011-11-09 2 views
9

Eclipse와 Window Builder Pro를 사용하여 Swing을 사용하여 Java GUI를 만듭니다. JButtonsJToggleButtons을 사용하고 있습니다. 다른 버튼에서 토글 버튼의 ​​상태를 변경하고 싶습니다.다른 버튼에서 전환 버튼의 상태 변경

enter image description here

예를 들어, 나는 맑은 그리드를 클릭하면, 모든 토글 버튼 '을 선택하지'를 할 것이다.

어떻게하면됩니까? 단추와 단추를 토글하는 데 사용해야하는 메서드는 무엇입니까?

답변

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

JButton 인스턴스에 ActionListener을 등록하고 거기에있는 토글 버튼에 액세스하여 상태를 조작 할 수 있는지 확인하십시오.

+0

토글 버튼의 ​​어떤 기능이 상태를 변경합니까? –

+1

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

+3

단추 상태를 토글 할 수 있습니다 'doClick()'을 사용하거나'setSelected (boolean)'을 사용하여 설정하십시오. javadocs에서 각각의 효과를 확인하십시오. –

4

actionListener를 JButton에 추가하고 actionPerformed (ActionEvent) 메서드에서 모든 JToggleButtons의 상태를 변경합니다. 이 메소드에서 모든 JToggleButton에 액세스 할 수 있는지 확인하십시오. 간단한 예는 것입니다 ..

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
내가이 찾고 있었다

, 이것은 내가 내 모든 버튼이 거짓 만드는 방법을 만든 사람이 밖으로

B1.setSelected(false); 

도움이 될 수 있습니다 (원할 때 토글 선택을 취소하십시오)

관련 문제