动作执行不感应按钮点击

时间:2013-04-21 00:43:10

标签: java swing action jbutton actionlistener

所以我有一些按钮:
static JButton rpsls = new JButton(new ImageIcon(rpslsscaled));
其中rpslsscaled是一些图像。所以我试着拿到按钮

public class SomeClass implements ActionListener{
    ...
    static JButton rpsls = new JButton(new ImageIcon(rpslsscaled));
    ...
    class SomeInnerClass implements ActionListener{
    ...
        public void actionPerformed(ActionEvent e){
            if (e.getSource() == rpsls) {
                JOptionPane.showMessageDialog(null,"You clicked rpsls!");
            }
        }
    }
    ...
    public void actionPerformed(ActionEvent e){
    ...
    }
}

当我按下按钮rpsls时,没有任何反应。它不会打印“你点击了rpsls!”。 这是因为2 actionPerformed方法吗?

4 个答案:

答案 0 :(得分:1)

问题:

  • 您将ActionListener添加到JButton的哪个位置?
  • 为什么使用静态变量?没有必要,实际上有一个强烈的论据来做到这一点。

解决方案:

  • 如果您希望按钮通过调用JButton实例上的addActionListener(...)来响应,请将ActionListener添加到JButton。
  • 摆脱所有不必要的静态修饰符。

答案 1 :(得分:1)

你错过了用听众设置按钮:

SomeInnerClass instance = new SomeInnerClass();
rpsls.adddActionListener(instance);//Using the inner class

rpsls.adddActionListener(this);//for the main Class

答案 2 :(得分:1)

您可能没有在外部类的按钮上添加ActionListener。 这样做:

rpsls.adddActionListener(new SomeInnerClass());

答案 3 :(得分:1)

设置一个在你的按钮上执行的动作,这将在你点击时捕获事件e并且你可以像任何其他方法一样定义你的actionPerfomed,或者你可以将你的动作定义为