当USER选择JComboBox中的项目时,如何创建一个触发器

时间:2010-12-09 21:41:33

标签: java events jcombobox

我正在寻找一个仅在用户(使用该程序的用户)选择JComboBox中的项目时才会触发的侦听器。我不想使用ActionListenerItemListener,因为当我通过程序选择项目时,这些也会触发。而且我也无法使用MouseListener,因为它仅在我点击JComboBox时触发,而不是在我选择项目时触发。

我想知道最简单的方法是什么?目前,我的解决方案很混乱。当我通过代码更改jcombobox的选定项目时,我将标志设置为true。在我的动作监听器中,只有在标志为假的情况下才会执行。

1 个答案:

答案 0 :(得分:2)

A)我建议您在以编程方式执行选择时暂时删除侦听器。

B)如果您的程序更改不是另一个GUI事件的影响,您可以使用以下丑陋/不健壮/容易出错/“hacky”方式解决它:检查EventQueue.isEventDispatchThread()以确定是否点击由GUI线程(用户)触发。

C)(哎呀我只是重新阅读你的问题,看到你已经发现了下面描述的方法。基本上我会说这个(或上面介绍的方法)是你最好的选择。)

另一种选择是使用一个名为nonUserSelection的布尔标志,在您以编程方式选择值并在之后重置为false之前将其设置为true。在动作监听器中,您只需添加

if (nonUserSelection)
    return;