我有一个恼人的问题,我似乎不明白其中的来源。我有一个应用程序和一个简单的用户界面。问题是,当我运行程序按钮时,只响应第二次点击。在他们完成他们必须做的事情后,按钮会响应第一次点击。我真的不知道问题的根源是什么。以下是绑定jButton和actionlistener的一些源代码:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
jButton1.addActionListener(new SolutionListener());
}
这里是actionlistener本身(如果它有帮助):
private class ListListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
jTextArea1.setText(null);
if (jTextField2.getText().equals("")) {
jTextArea1.append("Input a value");
}
else {
for (int i = 2; i <= Integer.valueOf(jTextField2.getText().trim()); i++) {
if(isSquare(i) == true) {
continue;
}
else {
PE pe = new PE(i);
answer = pe.solve();
jTextArea1.append(i + "\t");
jTextArea1.append(answer[0].toString() + " ");
jTextArea1.append(answer[1].toString() + "\n");
}
}
}
}
}
我非常感谢任何帮助,提前谢谢!
答案 0 :(得分:2)
您不应该在actionPerformed()代码中向按钮添加ActionLIstener。 (我不知道它是如何工作的)。
您的程序中必须有两个侦听器。另外,因为每次按下按钮时都会添加第二个侦听器,因此您将继续多次执行事件代码,因为您不断添加新的侦听器。
有关更多帮助,请发布展示问题的SSCCE。几行代码没有向我们展示如何构建GUI。
答案 1 :(得分:0)
如果您尝试这样做:
jButton1.addActionListener(new ActionListener () {
public void actionPerformed(java.awt.event.ActionEvent evt) {
System.out.println("outside Action");
jButton1.addActionListener(new ActionListener () {
public void actionPerformed(java.awt.event.ActionEvent evt2) {
System.out.println("inside Action");
}
});
}
});
一次按键将打印“外部动作”,第二次将打印“内部动作” 每个JButton只需要一个ActionListener。