我如何知道可编辑的JComboBox的文本何时被更改?
我有一个可编辑的JComboBox,每当文本更改时,我想通过键入或选择来执行一些操作。在本例中,文本是一个模式,我想验证该模式是否有效,并显示导致某些测试数据的匹配项。
在做了显而易见的事情之后,附加了一个ActionHandler,我发现,对于打字,事件似乎在充其量是不可靠的(选择很好)。当它由于键入而触发时,检索到的文本(使用getEditor().getItem(),因为getSelectedItem()仅在从列表中选择文本时获取文本)似乎是触发最后一个事件时的文本 - 也就是说,它总是缺少在触发操作事件之前键入的字符。
我本来以为动作事件会在短暂的延迟(500ms到1秒)后触发,但它似乎在键控时立即触发(如果它被触发的话)。
我能想到的唯一可行的替代方案是简单地在获得焦点时启动一个1秒计时器,在失去焦点时将其杀死,如果内容与上次不同,则将工作作为计时器操作。
有什么想法或建议吗?
代码片段不是特别有趣:
find.addActionListener(this);
...
public void actionPerformed(ActionEvent evt) {
System.out.println("Find: "+find.getEditor().getItem());
}