我正在用Java编写我的第一个复杂应用程序,Swing。当我将ActionListener添加到我的JButton时。
ActionListener changeButton = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e){
if(startButton.getText() == "Spustit") {
startButton.setText("STOP");
} else {
startButton.setText("Spustit");
}
}
}
我将ActionListener添加到按钮本身
private void startButtonActionPerformed(java.awt.event.ActionEvent evt) {
startButton.addActionListener(changeButton);
}
你能告诉我ActionListener的编码错误吗?
感谢所有人!
答案 0 :(得分:3)
您已将ActionListener编码为足以使其至少为动作侦听器本身工作。问题是您在事件(第二个示例)之后添加了动作侦听器,因此第二次单击它时将调用动作侦听器。
解决方案非常简单:
JButton button = new JButton();
button.addActionListener( new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//...
}
});
如果您直接向按钮添加新的ActionListener,而不是在执行某个操作后,动作侦听器应该在第一次单击时激活
答案 1 :(得分:1)
为什么要在actionPerformed中添加actionlistener?我认为你应该这样做:
public static void main(String[] args) {
final JButton startButton = new JButton("Spustit");
ActionListener changeButton = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (startButton.getText() == "Spustit") {
startButton.setText("STOP");
} else {
startButton.setText("Spustit");
}
}
};
startButton.addActionListener(changeButton);
// Add it to your panel where you want int
}