我已经开发了一些桌面应用程序,基于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行,没有人会费心去阅读它。
答案 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循环调用所有代码,你的错误在于没有在正确的位置添加循环的结束括号。
此外,考虑重新分解该怪物程序并使用具有逻辑意义的变量名称,您会发现调试程序会更容易。我们也一样。