Java 执行的操作未感应按钮单击

Java 执行的操作未感应按钮单击,java,swing,action,jbutton,actionlistener,Java,Swing,Action,Jbutton,Actionlistener,所以我有一些按钮: staticjbutton rpsls=newjbutton(newimageicon(rpslsscaled)) 其中rpslsscaled是一些图像。所以我试着去拿按钮 public class SomeClass implements ActionListener{ ... static JButton rpsls = new JButton(new ImageIcon(rpslsscaled)); ... class SomeInner

所以我有一些按钮:
staticjbutton rpsls=newjbutton(newimageicon(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个
操作
方法吗?

问题:

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

解决方案:

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

您没有通过侦听器设置按钮:

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


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


在您的按钮上设置执行的操作这将在您单击时捕获事件e,u可以将您的操作执行定义为任何其他方法,或定义为您设置的内部操作关于
“对不起?”抱歉,执行此操作时没有注意,请不要再回答!谢谢!:)*不过,谢谢你的帮助*“你读过了吗?”
:@Minecrafterguy64:你是故意要激怒那些只想帮助你的人吗?如果是这样的话,你做得很好。
rpsls.adddActionListener(this);//for the main Class
rpsls.adddActionListener(new SomeInnerClass());