仅当选择了单选按钮时,按钮才起作用

时间:2014-05-16 23:48:27

标签: java swing button selected

我有3个单选按钮和1个按钮。仅当选择了这3个选项中的一个时,按钮才有效。我怎样才能使用if / else?我知道我可以使用ifSelected,但我不知道我应该在以后写什么。我正在使用Swing。

JRadioButton latwy = new JRadioButton("Łatwy");
JRadioButton sredni = new JRadioButton("Średni");
JRadioButton trudny = new JRadioButton("Trudny");

ButtonGroup poziomTrudnosci= new ButtonGroup();
      poziomTrudnosci.add(latwy);
      poziomTrudnosci.add(sredni);
      poziomTrudnosci.add(trudny);


 if(latwy.isSelected() || sredni.isSelected() || trudny.isSelected()) {
      start.addActionListener(new ActionListener() {

                    @Override
                    public void actionPerformed(ActionEvent ae) {..........} 

            }
}
else
      JOptionPane.showMessageDialog(start, "Select some button.", "blablabla", JOptionPane.WARNING_MESSAGE);

我问过这个问题,因为如果选择某个单选按钮,按钮Start应该会动作。否则你应该声明你必须选择按钮。这段代码几乎可以工作,但只是第一次得到声明。下次按钮开始正常工作。

1 个答案:

答案 0 :(得分:3)

  1. 请在提出此类问题时始终展示您的尝试
  2. 并显示一些相关的相关代码。
  3. 给JRadioButtons ActionListeners检查所有单选按钮的状态,如果选择了正确的按钮,则启用按钮。
  4. 至于写什么,一个简单的if if语句检查是否选择了相关的JRadioButton。
  5. 编辑:实际上只是在感兴趣的JRadioButton上添加一个ItemListener就足够了 - 现在就开始测试....

  6. 修改
    是的,它的工作原理。只需在感兴趣的JRadioButton上添加一个ItemListener,甚至不使用if块:

    public void itemStateChanged(ItemEvent e) {
       testButton.setEnabled(e.getStateChange() == ItemEvent.SELECTED);
    } 
    

    修改2

    例如:

    import java.awt.event.ItemEvent;
    import java.awt.event.ItemListener;
    
    import javax.swing.*;
    
    public class CheckItemListener extends JPanel {
       private static final String[] RADIOS = {"Fe", "Fi", "Fo", "Fum"};
       private JButton testButton = new JButton("Test");
    
       public CheckItemListener() {
          ButtonGroup buttonGroup = new ButtonGroup();
          for (String radio : RADIOS) {
             JRadioButton rBtn = new JRadioButton(radio);
             add(rBtn);
             buttonGroup.add(rBtn);
             if (radio.equals("Fi")) {
                rBtn.addItemListener(new ItemListener() {
    
                   @Override
                   public void itemStateChanged(ItemEvent e) {
                      testButton.setEnabled(e.getStateChange() == ItemEvent.SELECTED);
                   }
                });
             }
          }
          add(testButton);
    
          testButton.setEnabled(false);
       }
    
       private static void createAndShowGui() {
          CheckItemListener mainPanel = new CheckItemListener();
    
          JFrame frame = new JFrame("CheckItemListener");
          frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          frame.getContentPane().add(mainPanel);
          frame.pack();
          frame.setLocationByPlatform(true);
          frame.setVisible(true);
       }
    
       public static void main(String[] args) {
          SwingUtilities.invokeLater(new Runnable() {
             public void run() {
                createAndShowGui();
             }
          });
       }
    }