2017-05-06 11 views
0

하나의 클래스에서 2 개의 라디오 버튼을 선택하여 다른 클래스의 JButton을 누를 수 있도록하려고합니다.Java 라디오 버튼을 사용하여 동작을 시작하고 다른 버튼을 클릭하는 방법

즉, 라디오 버튼을 누르지 않으면 다른 클래스의 버튼을 누르고 다른 클래스의 버튼 색상을 변경할 수 없습니다.

여러 액션 리스너를 추가하는 것에 대해 생각하고 있지만 코드가 없지만 getters와 setters를 시도했지만 아무 일도 일어나지 않아 작동하지 않습니다. 문자열을 설정하고 다른 클래스에서 그것을 얻을 수 있지만 작동하지 않는 다음

If(btn.equals("w")){ 

Some string = "w" 

}else{ 

Some string = "b" 

} 

과 :

나는 라디오 버튼의 예에서 문자열을 사용하려고했습니다. 두 개의 라디오 버튼 중 하나를 누른 다음 다른 JButton을 클릭하여 사용할 수있는 방법이 있습니까? 어떻게 그럴 수 있니?

답변

0

이 코드는 첫 번째 그룹의 라디오 버튼이 선택되면 두 번째 그룹의 모든 라디오 버튼을 활성화합니다.

public class RadioButtonDemo extends JFrame { 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
       new RadioButtonDemo().setVisible(true); 
      } 
     }); 
    } 

    public RadioButtonDemo() { 
     super("Swing JRadioButton Demo"); 

     JRadioButton option1 = new JRadioButton("Linux 1"); 
     JRadioButton option2 = new JRadioButton("Windows 1"); 
     JRadioButton option3 = new JRadioButton("Macintosh 1"); 

     JRadioButton option4 = new JRadioButton("Linux 2"); 
     JRadioButton option5 = new JRadioButton("Windows 2"); 
     JRadioButton option6 = new JRadioButton("Macintosh 2"); 

     ButtonGroup group1 = new ButtonGroup(); 
     ButtonGroup group2 = new ButtonGroup(); 

     ActionListener listener = new AbstractAction() { 
      @Override 
      public void actionPerformed(ActionEvent e) { 
       if (((JRadioButton) e.getSource()).isSelected()) { 
        Enumeration<AbstractButton> elements = group2.getElements(); 
        while (elements.hasMoreElements()) { 
         JRadioButton button = (JRadioButton) elements.nextElement(); 
         button.setEnabled(true); 
        } 
       } 
      } 
     }; 

     option1.addActionListener(listener); 
     option2.addActionListener(listener); 
     option3.addActionListener(listener); 

     option4.setEnabled(false); 
     option5.setEnabled(false); 
     option6.setEnabled(false); 

     group1.add(option1); 
     group1.add(option2); 
     group1.add(option3); 

     group2.add(option4); 
     group2.add(option5); 
     group2.add(option6); 

     setLayout(new FlowLayout()); 

     add(option1); 
     add(option2); 
     add(option3); 

     add(option4); 
     add(option5); 
     add(option6); 


     pack(); 
    } 
} 

버튼의 색상을 변경하는 코드에서 사용 설정 여부를 먼저 확인해야합니다. 또는 UI 요소에서이 작업을 수행 한 경우 필요에 따라 UI 요소를 비활성화 할 수 있습니다.

+0

좋습니다,하지만 아마 내가 멍청하다고 짐작했습니다. JButton이 다른 클래스에 있습니다. 다른 클래스의 JButton을 작동 시키려면 ActionListen 상속을 사용해야합니까? –

+0

여기서 호출 할 수있는 클래스에서 메소드를 만들 수 없습니까? 그렇지 않은 경우 SSCCE를 제공 할 수 있습니까? https://meta.stackexchange.com/questions/22754/sscce-how-to-provide-examples-for-programming-questions – Dalendrion

+0

안타깝게도 해결책을 찾은 것 같지만 내가 게시 할 수는 없습니다. 양철통 –