[英]How do I make a listener that fires when the USER selects an item in a JComboBox
我正在寻找一个仅在用户(使用该程序的用户)选择JComboBox
的项目时JComboBox
触发的侦听器。 我不想使用ActionListener
或ItemListener
因为当我通过程序选择项目时,它们也会触发。 而且我也不能使用MouseListener
,因为它只在我单击JComboBox
时触发,而不是在我选择项目时触发。
我想知道最简单的方法是什么? 目前,我的解决方案很混乱。 当我通过代码更改jcombobox的选定项目时,我将标志设置为true。 在我的动作监听器中,只有在标志为false时才会执行。
A)我建议您在以编程方式执行选择时临时删除侦听器。
B)如果您的程序更改不是另一个GUI事件的影响,您可以使用以下丑陋/非健壮/容易出错/“hacky”方式解决它:检查EventQueue.isEventDispatchThread()
以查明是否触发了点击GUI线程(用户)。
C) (哎呀我只是重新阅读你的问题,看到你已经发现了下面描述的方法。基本上我会说这个(或上面描述的方法)是你最好的选择。)
另一种选择是使用一个名为nonUserSelection
的布尔标志,在以编程方式选择值并在之后重置为false之前将其设置为true。 在动作监听器中,您只需添加一个
if (nonUserSelection)
return;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.