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