我正在寻找一个侦听器,它只在用户(使用该程序的用户)选择JComboBox
中的一个项时触发。我不想使用ActionListener
或ItemListener
,因为当我通过程序选择项目时,它们也会触发。我也不能使用MouseListener
,因为它只在单击JComboBox
时触发,而不是在选择项时触发。
我想知道最简单的方法是什么?目前,我的解决方案是混乱的。当我通过代码更改jcombobox的选定项时,我将一个标志设置为true。在我的动作监听器中,它只在标志为false时执行。
发布于 2010-12-09 21:44:52
( A)我建议您在以编程方式执行所选内容时暂时删除侦听器。
B)如果您的编程更改不是另一个GUI事件的影响,您可以通过以下丑陋/非健壮/容易出错/“黑客”的方式解决它:检查EventQueue.isEventDispatchThread()
以确定单击是否是由GUI线程(用户)触发的。
(噢,我刚刚重读了你的问题,发现你已经发现了下面描述的方法。基本上,我会说这(或者上面描述的方法)是最好的选择)。
另一个选项是有一个名为nonUserSelection
的布尔标志,您可以在编程选择值之前将其设置为true,然后再将其重置为false。在动作监听器中,您只需添加一个
if (nonUserSelection)
return;
https://stackoverflow.com/questions/4403410
复制相似问题