jButton реагирует только на второй щелчок (Netbeans 6.9.1, Java) - PullRequest
0 голосов
/ 28 января 2011

У меня досадная проблема, и я не понимаю, откуда приходит. У меня есть приложение и простой интерфейс для него. Проблема в том, что при запуске кнопки программы реагируют только на второй щелчок. После того, как они делают то, что должны, кнопки реагируют на первый щелчок. Я действительно не знаю, что является источником проблемы. Вот некоторый исходный код для привязки jButton и actionlistener:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    // TODO add your handling code here:
    jButton1.addActionListener(new SolutionListener());
}

А вот и сам список действий (если он помогает):

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 ]

2 голосов
/ 28 января 2011

Не следует добавлять ActionLIstener к кнопке в коде actionPerformed ().(Я вообще не знаю, как это работает).

В вашей программе должно быть два слушателя.Кроме того, поскольку вы добавляете второго прослушивателя при каждом нажатии кнопки, код события будет выполняться несколько раз, так как вы продолжаете добавлять нового слушателя.эта проблема.Несколько строк кода не показывают нам, как построен графический интерфейс.

0 голосов
/ 28 января 2011

Если вы попробуете это:

    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");
                }
            });
        }
   });

Один щелчок мыши напечатает «внешнее действие», а второй - «внутреннее действие».
Вам нужен только один ActionListener на JButton.

...