【问题标题】:actionperformed not sensing button clickactionperformed 没有感应到按钮点击
【发布时间】:2013-04-21 00:43:10
【问题描述】:

所以我有一些按钮:
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 方法吗?

【问题讨论】:

    标签: java swing action jbutton actionlistener


    【解决方案1】:

    问题:

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

    解决办法:

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

    【讨论】:

      【解决方案2】:

      你错过了用监听器设置按钮:

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

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

      【讨论】:

        【解决方案3】:

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

        rpsls.adddActionListener(new SomeInnerClass());
        

        【讨论】:

          【解决方案4】:

          在您的按钮上设置一个执行的操作,这将在您单击时捕获事件 e,您可以将您的 actionPerfomed 定义为任何其他方法或您拥有它们的内部

          【讨论】:

          • 关于"excuse me? "SORRY WASN'T PAYING ATTENTION WHILE DOING THIS, NO MORE ANSWERS PLEASE! Thanks! :) *Thanks for helping, though!*" Did you read that?":@Minecrafterguy64:你是不是故意要惹恼那些只想帮助你的人?如果是这样,那么你做得很好。
          猜你喜欢
          • 2019-06-18
          • 2019-01-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-08-28
          • 2016-09-26
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多