2015-03-02 56 views
0
listItemsCombo.getEditor().getEditorComponent().addKeyListener(new keyPressListener()); //Works correct 

這工作正常。但是,在將keyListener添加到jcomboBox時,按下「Enter」鍵時keyPress不會被識別。將keyListener添加到jComboxBox並向其編輯器中添加偵聽器之間的區別是什麼?何時將偵聽器添加到編輯器中?是添加KeyListener到JCombobox編輯器和JCombobox本身之間有什麼區別

listItemsCombo.addKeyListener(new KeyPressListener())//When should we use this? 
+0

[Java Editable JCombobox Keylistener event for Enter key]可能的重複(http://stackoverflow.com/questions/14056301/java-editable-jcombobox-keylistener-event-for-enter-key) – 2015-03-02 11:49:57

+0

它可以很好地工作我使用編輯器的監聽器,但我的問題是何時使用它?我們是否使用它? – divya 2015-03-02 11:55:38

回答

0

什麼添加的KeyListener到jComboxBox並添加監聽器,它的編輯器之間準確的區別?

KeyEvents僅被分派到具有焦點的組件。

何時向監聽器添加監聽器?

您不應該在組合框或編輯器上使用KeyListener。 Swing旨在與Key Bindings一起使用。使用密鑰綁定,即使組件沒有焦點(如果您願意),您也可以處理KeyStroke。請閱讀有關How to Use Key Bindings的Swing教程以瞭解更多信息。

+0

可以使用KeyBindings。我也需要聆聽KeyTyped。 KeyBindings可用於KeyPress。但是爲了從keyBoard獲取userInput(像abc ..這樣的鍵),我需要添加一個keyListener,或者它可以使用keyBindings來執行? – divya 2015-03-03 05:40:36

+0

@divya,當您想要在按下特定鍵時調用動作時使用鍵綁定。如果您只想知道文本何時添加到文本字段,那麼您應該使用「DocumentListener」。本教程還有一節「如何編寫DocumentListener」。 – camickr 2015-03-03 07:01:18