我正在寻找一个仅在用户(使用该程序的用户)选择JComboBox
. 我不想使用ActionListener
,或者ItemListener
因为当我通过程序选择一个项目时它们也会触发。而且我也不能使用MouseListener
,因为它只在我单击时触发JComboBox
,而不是在我选择一个项目时触发。
我想知道最简单的方法是什么?目前,我的解决方案很混乱。当我通过代码更改 jcombobox 的选定项时,我将标志设置为 true。在我的动作监听器中,它仅在标志为假时执行。
A)我建议您在以编程方式执行选择时暂时删除侦听器。
B)如果您的程序更改不是另一个 GUI 事件的影响,您可以通过以下丑陋/非鲁棒/容易出错/“hacky”的方式解决它:检查EventQueue.isEventDispatchThread()
单击是否由 GUI 线程触发(用户)。
C)(糟糕,我刚刚重读了您的问题,发现您已经发现了下面描述的方法。基本上我会说这个(或上面描述的方法)是您最好的选择。)
nonUserSelection
另一种选择是在以编程方式选择一个值并在之后重置为 false 之前设置一个名为类似的布尔标志。在动作监听器中,您只需添加一个
if (nonUserSelection)
return;