以下是该方案。我有一个带有大量复选框的摇摆小程序。其中一些在检查另一个时被禁用/取消选中。每个ItemStateChange()
事件都会执行一个方法来解析整个表单以进行更改。有没有办法判断由于鼠标点击或ItemStateChange()
来电是否触发了setSelected()
事件?
每个复选框的ItemStateChange()
都有标准参数java.awt.event.ItemEvent evt
我想在单击一个框时只调用processOrder()方法一次。现在它会针对所做的每一次更改触发,无论更改是否发生在setSelected()
。有时,只需点击一次即可进行10次parseForm();
次来电。
答案 0 :(得分:1)
您无法判断事件的来源是鼠标单击还是来自ItemEvent的setSelected调用。
听起来你的复选框逻辑中有一个循环。您可能希望添加一个处理事件的控制器并设置每个复选框,但忽略由于在其他复选框上调用setSelected而发生的事件。
答案 1 :(得分:1)
有没有办法判断是否因为鼠标点击或setSelected()调用而触发了ItemStateChange()事件?
如果您的应用程序手动调用setSelected()方法,那么您可以使用如下代码:
checkBox.removeItemListener(...);
checkBox.setSelected(...);
checkBox.addItemListener(...);
答案 2 :(得分:1)
如果您可以更改为使用MouseListener而不是ItemListener并响应mouseClicked()事件,则只会收到用户选中的复选框的事件。