首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当用户选择JComboBox中的项时,如何使侦听器触发

当用户选择JComboBox中的项时,如何使侦听器触发
EN

Stack Overflow用户
提问于 2010-12-09 21:41:33
回答 1查看 676关注 0票数 5

我正在寻找一个侦听器,它只在用户(使用该程序的用户)选择JComboBox中的一个项时触发。我不想使用ActionListenerItemListener,因为当我通过程序选择项目时,它们也会触发。我也不能使用MouseListener,因为它只在单击JComboBox时触发,而不是在选择项时触发。

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

EN

回答 1

Stack Overflow用户

发布于 2010-12-09 21:44:52

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

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

(噢,我刚刚重读了你的问题,发现你已经发现了下面描述的方法。基本上,我会说这(或者上面描述的方法)是最好的选择)。

另一个选项是有一个名为nonUserSelection的布尔标志,您可以在编程选择值之前将其设置为true,然后再将其重置为false。在动作监听器中,您只需添加一个

代码语言:javascript
运行
复制
if (nonUserSelection)
    return;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4403410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档