无法为单选按钮调用动作侦听器

时间:2017-10-18 04:56:28

标签: java swing

enter image description here我正在编写一个代码,其中有一个包含4个选项卡的tabbedpane。每个选项卡都包含一些单选按钮和一个按钮。按钮应按下按下的单选按钮。以下是我的代码。

       if(radiobtn1.isSelected()==true)
  `                  {
                      System.out.println("option 1 selected");
                  radiobtn1.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent e) {
                            Button1.addActionListener(new ActionListener() {
                            public void actionPerformed(ActionEvent e) {
                            // action for radio button 1

                            }
                        }); 


                    }

                    });
              }
              else if(radiobtn2.isSelected()==true){
               System.out.println("option 2 selected");
              radiobtn2.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent e) {
                            Button1.addActionListener(new ActionListener() {
                            public void actionPerformed(ActionEvent e) {
                            // action for radio button 2

                            }
                        }); 


                    }

                    });
              }
              }

但每当我按下一个单选按钮时,它的动作监听器就不会被调用。我的代码有什么问题吗?

2 个答案:

答案 0 :(得分:0)

修改您的代码,如下所示

rdbtnSample.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent arg0) {
                if (rdbtnSample.isSelected())
                    System.out.println("Button Pressed");
                else
                    System.out.println("Button Released");
            }
        });

在执行的操作中添加if条件。 默认情况下,将取消选择单选按钮。

答案 1 :(得分:0)

我认为你应该使用数据或开关参数来控制动作内容。不是通过动态控制按钮中的动作监听器。

就像使用 int radioButtonIndexPressed = 0;

并在按钮按下操作中,使用radioButtonIndexPressed来决定实际操作。