我有一個編輯的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