我们可以判断鼠标是否实际点击了Java中的复选框吗?

时间:2011-02-08 21:06:28

标签: java swing checkbox click mouseevent

以下是该方案。我有一个带有大量复选框的摇摆小程序。其中一些在检查另一个时被禁用/取消选中。每个ItemStateChange()事件都会执行一个方法来解析整个表单以进行更改。有没有办法判断由于鼠标点击或ItemStateChange()来电是否触发了setSelected()事件?

每个复选框的ItemStateChange()都有标准参数java.awt.event.ItemEvent evt

我想在单击一个框时只调用processOrder()方法一次。现在它会针对所做的每一次更改触发,无论更改是否发生在setSelected()。有时,只需点击一次即可进行10次parseForm();次来电。

3 个答案:

答案 0 :(得分:1)

您无法判断事件的来源是鼠标单击还是来自ItemEvent的setSelected调用。

听起来你的复选框逻辑中有一个循环。您可能希望添加一个处理事件的控制器并设置每个复选框,但忽略由于在其他复选框上调用setSelected而发生的事件。

答案 1 :(得分:1)

  

有没有办法判断是否因为鼠标点击或setSelected()调用而触发了ItemStateChange()事件?

如果您的应用程序手动调用setSelected()方法,那么您可以使用如下代码:

checkBox.removeItemListener(...);
checkBox.setSelected(...);
checkBox.addItemListener(...);

答案 2 :(得分:1)

如果您可以更改为使用MouseListener而不是ItemListener并响应mouseClicked()事件,则只会收到用户选中的复选框的事件。