jButton有一种非常奇怪的行为

时间:2012-06-09 13:21:49

标签: java swing user-interface jbutton actionlistener

我已经开发了一些桌面应用程序,基于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行,没有人会费心去阅读它。

1 个答案:

答案 0 :(得分:4)

事实上,我会将我的评论作为答案:

我的猜测 - 您的问题是代码未显示,并且您可能会将ActionListener添加到每个JButton 7次。您是否使用for循环来执行此操作?您需要仔细检查您的代码,现在,我们无法帮助您,因为有问题的代码尚未显示。

编辑:你的pastebin帖子暗示你实际上在for循环中做了很多GUi初始化的东西,这个循环:for (int ii = 0; ii < holder2.size() / 3; ii++) {。检查结束大括号的位置:

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

这些大括号之间有一个 ton 代码,包括大多数所有GUI初始化代码。这可能是导致您将ActionListener添加到按钮7次的原因。我的猜测是你真的不希望for循环调用所有代码,你的错误在于没有在正确的位置添加循环的结束括号。

此外,考虑重新分解该怪物程序并使用具有逻辑意义的变量名称,您会发现调试程序会更容易。我们也一样。