-1

所以我有一些按钮:
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!”。这是因为这两种actionPerformed方法吗?

4

4 回答 4

1

问题:

  • 你在哪里将你的 ActionListener 添加到你的 JButton 中?
  • 为什么要使用静态变量?没有必要,事实上有一个强有力的论据这样做。

解决方案:

  • addActionListener(...)如果您希望按钮通过调用JButton 实例来响应,请将您的 ActionListener 添加到您的 JButton。
  • 摆脱所有不必要的静态修饰符。
于 2013-04-21T00:44:48.377 回答
1

您错过了使用侦听器设置按钮:

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

或者

rpsls.adddActionListener(this);//for the main Class
于 2013-04-21T00:47:30.050 回答
1

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

rpsls.adddActionListener(new SomeInnerClass());
于 2013-04-21T00:53:40.840 回答
1

在您的按钮上设置一个 actionperformed 这将在您单击时捕获事件 e 并且您可以将您的 actionPerfomed 定义为任何其他方法或您拥有的内部

于 2013-04-21T00:56:35.043 回答