fen*_*ent 5 java events jcombobox
我正在寻找一个只有当用户(正在使用该程序的用户)选择一个项目时才会触发的监听器JComboBox.我不想使用ActionListener或ItemListener因为当我通过程序选择项目时也会触发.我也不能使用MouseListener它,因为它只在我点击时才会触发JComboBox,而不是在我选择一个项目时触发.
我想知道最简单的方法是什么?目前,我的解决方案很混乱.当我通过代码更改jcombobox的选定项目时,我将标志设置为true.在我的动作监听器中,只有在标志为false时才会执行.
A) 我建议您在以编程方式执行选择时暂时删除侦听器。
B) 如果您的程序更改不是另一个 GUI 事件的影响,您可以通过以下丑陋/不稳健/容易出错/“hacky”方式解决它:检查EventQueue.isEventDispatchThread()以查明单击是否由 GUI 线程触发(用户)。
C)(哎呀,我刚刚重读了你的问题,发现你已经发现了下面描述的方法。基本上我会说这个(或上面描述的方法)是你最好的选择。)
另一种选择是使用一个名为类似名称的布尔标志,nonUserSelection在以编程方式选择值之前将其设置为 true,然后重置为 false。在动作监听器中,您只需添加一个
if (nonUserSelection)
return;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
669 次 |
| 最近记录: |