Java 使用ActionListener查找事件时遇到问题

Java 使用ActionListener查找事件时遇到问题,java,swing,Java,Swing,我刚刚开始与JSwing合作,并试图学习如何处理按钮等,因此所有的批评都将受到赞赏,我将为任何基本错误提前道歉。我只是尝试创建一个基本的JFrame,其中包含两个结果不同的按钮。由于某些原因,actionPerformed方法无法找到按钮“pressme”,即使我使用Action Listener。有人能帮我找到解决办法吗?提前谢谢你! -尼克 您的按钮是在方法中声明和实例化的局部变量,请将其更改为实例变量,例如: private final JButton pressme; private f

我刚刚开始与JSwing合作,并试图学习如何处理按钮等,因此所有的批评都将受到赞赏,我将为任何基本错误提前道歉。我只是尝试创建一个基本的JFrame,其中包含两个结果不同的按钮。由于某些原因,actionPerformed方法无法找到按钮“pressme”,即使我使用Action Listener。有人能帮我找到解决办法吗?提前谢谢你! -尼克


您的按钮是在方法中声明和实例化的局部变量,请将其更改为实例变量,例如:

private final JButton pressme;
private final JButton secondpress;

createContentPane(){
pressme = new JButton("Nah, what are you talking         about?");
secondpress =new JButton("Yea she's a hardcore savage.");
}

您的按钮是在方法中声明和实例化的局部变量,请将其更改为实例变量,例如:

private final JButton pressme;
private final JButton secondpress;

createContentPane(){
pressme = new JButton("Nah, what are you talking         about?");
secondpress =new JButton("Yea she's a hardcore savage.");
}

首先,更改您的类名。它不能是现有类/容器的名称(JPanel)。其次,对按钮和其他UI元素使用类变量而不是局部变量

==将检查变量是否指向同一内存。对象将在方法完成执行后销毁

如果仍然无法执行侦听器,请使用以下类型的代码来检查按下了哪个按钮,而不是使用==操作:

    button.setActionCommand("-");
    button.addActionListener(this);
    public void actionPerformed(ActionEvent me){

      JButton button =(JButton)me.getSource();
      if(button.getActionCommand().equals("-"))
        //corresponding action to be taken
      }
    }

很久以前,它就为我解决了同样的问题。

首先,更改您的类名。它不能是现有类/容器的名称(JPanel)。其次,对按钮和其他UI元素使用类变量而不是局部变量

==将检查变量是否指向同一内存。对象将在方法完成执行后销毁

如果仍然无法执行侦听器,请使用以下类型的代码来检查按下了哪个按钮,而不是使用==操作:

    button.setActionCommand("-");
    button.addActionListener(this);
    public void actionPerformed(ActionEvent me){

      JButton button =(JButton)me.getSource();
      if(button.getActionCommand().equals("-"))
        //corresponding action to be taken
      }
    }

很久以前,它就为我解决了同样的问题。

给你的类命名
JPanel
不是一个好主意。你没有收到编译错误吗?您的类JPanel与javax.swing.JPanel冲突。JPanel窗格=新的JPanel();将导致错误。
pressme
和其他组件在
createContent
中声明,因此
操作执行时无法看到它们。这些变量的范围仅限于
createcontent
方法。您也没有在createContentPane中返回JPanel以将其添加到JFrame。命名类
JPanel
不是一个好主意。您没有收到编译错误吗?您的类JPanel与javax.swing.JPanel冲突。JPanel窗格=新的JPanel();将导致错误。
pressme
和其他组件在
createContent
中声明,因此
操作执行时无法看到它们。这些变量的范围仅限于
createcontent
方法。您也不会返回createContentPane中的JPanel将其添加到JFrame。非常感谢您的反馈!非常有帮助!非常感谢您的反馈!非常有帮助!