繁体   English   中英

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

[英]How do I make a listener that fires when the USER selects an item in a JComboBox

我正在寻找一个仅在用户(使用该程序的用户)选择JComboBox的项目时JComboBox触发的侦听器。 我不想使用ActionListenerItemListener因为当我通过程序选择项目时,它们也会触发。 而且我也不能使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM