itemlistener在java_java – JToggleButton addItemListener似乎永远重复ItemListener

我正在编写一个JToggleButton来加载/丢弃一个元素的配置(望远镜配置),所以我在JFrame中添加了一个JComboBox,并在它附近加载了所选项目的按钮.选择JToggleButton时,将显示硬盘图标,否则显示另一个图标.我正在使用IntelliJ IDEA GUI编辑器.当然,我已经将一个ItemListener(从网络上建议)添加到该按钮:

loadTelescopeButton.setSelected(true);

System.out.println(loadTelescopeButton.isSelected());

loadTelescopeButton.addItemListener(new ItemListener() {

@Override

public void itemStateChanged(ItemEvent e) {

System.out.println("LAODACTION " + loadTelescopeButton.isSelected());

try {

if (e.getStateChange() == ItemEvent.SELECTED) {

String selected = telescopesList.getSelectedItem().toString();

if ((selected != null) && (!selected.equals("")) && (ObjUtils.isAlphaNumeric(selected))) {

//...

} else {

showErrorMessage("Invalid id selected!");

}

} else if (e.getStateChange() == ItemEvent.DESELECTED) {

if ((configurationActivity != null) && (configurationActivity.getManager() != null) &&

(configurationActivity.getTelescope() != null) && (configurationActivity.getTelescope().isConnected())) {

//...

} else {

//...

}

}

} catch (Exception e1) {

e1.printStackTrace();

}

}

});

输出:

真正

– >显示窗口时

LAOD_ACTION假

– >当我点击按钮

我用一些新的切换按钮进行了一些测试,他们给了我同样的错误:itemStateChanged(ItemEvent e){…}中的代码永远重复,不停止!在那段代码中没有for和while循环!结果是大量的消息对话框(只显示一个对话框),如果我将另一个窗口聚焦在桌面上,则对话框后面的屏幕变为黑色(父窗口的区域).我将侦听器更改为ActionListener,现在所有操作都执行一次/单击.

GitHub Here上的完整代码,我突出显示了该切换按钮的代码.我的MainActivity.java文件中的其他JToggleButtons也发生了同样的错误,并且在调试IntelliJ时也让我看到监听器中的代码永远重复.在几千个对话框之后,Windows向我显示一条消息并关闭Java Platform Binary并显示错误.

编辑:

新课程中的同样问题:

import javax.swing.*;

import java.awt.*;

public class ErrorGUI extends JFrame {

public ErrorGUI() throws HeadlessException {

super("ciao");

JPanel panel1 = new JPanel();

setContentPane(panel1);

JToggleButton ciaoToggleButton = new JToggleButton("cajs");

ciaoToggleButton.setSelected(true);

ciaoToggleButton.addItemListener(e -> {

System.out.println("caiooasfsdvn");

try {

JOptionPane.showMessageDialog(panel1, "skjngksfnb");

} catch (Exception e2) {

e2.printStackTrace();

}

});

panel1.add(ciaoToggleButton);

pack();

setVisible(true);

}

public static void main(String[] args) {

new ErrorGUI();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值