首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何知道可编辑JComboBox的文本何时被更改?

如何知道可编辑JComboBox的文本何时被更改?
EN

Stack Overflow用户
提问于 2009-08-10 00:40:39
回答 3查看 15.6K关注 0票数 19

我有一个可编辑的JComboBox,每当文本更改时,我想要采取一些操作,无论是通过键入还是选择。在本例中,文本是一个模式,我想验证该模式是否有效,并显示产生一些测试数据的匹配项。

在执行了显而易见的附加ActionHandler之后,我发现,对于输入,事件似乎不可靠地触发,充其量也就是触发(选择也可以)。当它由于输入而触发时,检索到的文本(使用getEditor().getItem(),因为getSelectedItem()只在从列表中选择时才获取文本)似乎是触发最后一个事件时的文本-也就是说,它总是缺少在操作事件触发之前输入的字符。

我期望动作事件会在短暂的延迟(500ms到1秒)后触发,但它似乎是在按键时立即触发(如果它被触发的话)。

我能想到的唯一可行的替代方案是,简单地在焦点获得时启动1秒计时器,在焦点丢失时终止它,如果内容与上次不同,则将工作作为计时器操作。

有什么想法或建议吗?

代码片段并不是特别有趣:

代码语言:javascript
复制
find.addActionListener(this);
...
public void actionPerformed(ActionEvent evt) {
    System.out.println("Find: "+find.getEditor().getItem());
    }
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1252698

复制
相关文章

相似问题

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