2

netbeans GUIクリエーターに基づいてデスクトップアプリケーションを開発しました.jButtonの動作に関する奇妙な問題に直面しています.クリックするたびに7回動作します:

jButton7.addActionListener(new ButtonListener());
class ButtonListener implements ActionListener {
ButtonListener() {
}
    public void actionPerformed(ActionEvent e) {
        if (e.getActionCommand().equals("pushToTest")) {
            System.out.println("Button1 has been clicked");
            }
      }
}

出力は次のようになります。

Button1 has been clicked
Button1 has been clicked
Button1 has been clicked
Button1 has been clicked
Button1 has been clicked
Button1 has been clicked
Button1 has been clicked

ワンクリック直後。それは私のすべてのボタンに起こります.GUIのコードを投稿することはできません.1700行のようです.誰もそれを読むことさえしません.

4

1 に答える 1

4

実際、私は私のコメントを答えにします:

私の推測では、問題は示されていないコードにあり、各 JButton に ActionListener を 7 回追加している可能性があります。これを行うために for ループを使用していますか? コードを注意深く確認する必要があります。また、問題のコードがまだ表示されていないため、現時点ではお手伝いできません。

編集: あなたのペーストビンの投稿は、実際には for ループ内で多くの GUI 初期化を行っていることを示唆していますfor (int ii = 0; ii < holder2.size() / 3; ii++) {。閉じ中括弧がどこにあるかを確認してください。

         setComponent(mainPanel);
     setMenuBar(menuBar);
     setStatusBar(statusPanel);
  }// </editor-fold>  // *** here ***

そして、これらの中括弧の間には、ほとんどすべてのGUI初期化コードを含む大量のコードがあります。これが、ボタンに ActionListener を 7 回追加する原因となっている可能性があります。私の推測では、for ループがすべてのコードを呼び出すことを本当に望んでおらず、正しい場所にループの終了ブレースを追加しなかったことが間違いでした。

また、モンスター プログラムのリファクタリングを検討し、論理的に意味のある変数名を使用すると、プログラムのデバッグがはるかに簡単になることがわかります。私たちも同じです。

于 2012-06-09T13:26:02.087 に答える