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());