我有一个编辑的JComboBox,我想,通过输入或选择采取一些动作,当文字被改变。在这种情况下,文本是一种模式,我想验证该模式是否有效,并显示导致某些测试数据的匹配项。如何知道可编辑JComboBox的文本何时更改?
做完明显,附加一个的ActionHandler,我发现,打字,事件似乎不可靠火,充其量(选择是罚款)。而当它确实火打字的结果,文字检索(使用getEditor()。getItem()时,因为getSelectedItem()只得到,当它被从列表中选择文本)似乎是文本,因为它是当最后一个事件被触发时 - 也就是说,它始终缺少在操作事件被触发之前键入的字符。
我期待的动作事件的一些短暂的延迟(500毫秒到1秒)之后触发,但似乎立刻在键控射击(如果在所有的发射)。
我能想到的唯一可行的选择是简单地启动焦点获得的1秒定时器,在焦点丢失时将其消灭,并在内容与上次不同时执行定时器动作。
任何想法或建议?
的代码片段是不是特别有趣:
find.addActionListener(this);
...
public void actionPerformed(ActionEvent evt) {
System.out.println("Find: "+find.getEditor().getItem());
}
谢谢,我会试试看。我不介意Swing作为一个整体,但有时候弄清楚如何获得某些行为或者捕捉某些事件是** FAR **显而易见的。 – 2009-08-10 20:19:28
好了,撇开方法调用的“19”的水平...具有所添加的文档侦听器,在事件发生时我能找到没有办法将比分扳成到两个组合框被改变。在这一点上,一个简单的计时器看起来非常有吸引力。 – 2009-08-11 05:27:55
我存储了两个认证机构的最后一个已知文本,并使用它来确定文档事件触发时发生了哪些变化。如果您知道如何将事件绑定到触发它的组件,这将是有用的信息 - 因为DocumentEvent不是标准的AWT事件或java.util.EventObject。 – 2009-08-11 05:55:18