jButton只响应第二次点击(Netbeans 6.9.1,Java)

时间:2011-01-27 21:26:37

标签: java netbeans jbutton

我有一个恼人的问题,我似乎不明白其中的来源。我有一个应用程序和一个简单的用户界面。问题是,当我运行程序按钮时,只响应第二次点击。在他们完成他们必须做的事情后,按钮会响应第一次点击。我真的不知道问题的根源是什么。以下是绑定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");
                }
            }
        }
    }
}

我非常感谢任何帮助,提前谢谢!

2 个答案:

答案 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。