2011-09-22 47 views
3

通常我們將Key Listener應用於特定組件,如文本字段,密碼字段等。但是我想概括一下此偵聽器行爲適用於所有組件。在Swing中,如何將KeyListener應用於無特定組件

+0

你也可以看看在[鍵綁定]處(http://download.oracle.com/javase/tutorial/uiswing/misc/keybinding.html)。 – Howard

+2

不,一般來說,我們根本不使用KeyListener ;-) – kleopatra

回答

6

Swing設計用於鍵綁定,它可以做你想做的。我將首先檢查Key Bindings。不要忘記閱讀Swing教程以獲取完整信息。

如果這沒有幫助,請參閱Global Event Listeners以獲得一些建議。

+0

考慮我的要求是這樣的 - 我寫了一個系統托盤應用程序。這是默認最小化爲系統托盤。現在我打開記事本並鍵入內容。我想抓住這個關鍵的新聞事件。這可能嗎? – Sriram

+0

我會在4個月內回覆您。 – camickr

1

所有的swing組件都是一個JComponent。您可以使用全部作爲JComponent:

@Override 
public void keyTyped(KeyEvent e) { 
    JComponent component = (JComponent) e.getSource(); 
    // TODO Implements your action 
} 

您可以看到這是一種有限的方法。

您也可以根據您的類源的工作:

@Override 
public void keyTyped(KeyEvent e) { 
    Object source = (JComponent) e.getSource(); 

    if (source instanceof JTextField) { 
     // TODO Implment action for JTextField 
    } else if (source instanceof JTextArea) { 
     // TODO Implment action for JTextArea 
    } 
} 

根據您的需求,你可以使用API​​思考這樣做......

+0

請閱讀API文檔(提示:InputEvent有一個方法來獲取比Object更窄的源類型) – kleopatra

+0

@Eldius考慮我的要求是這樣的 - 我寫了一個系統托盤應用程序。這是默認最小化爲系統托盤。現在我打開記事本並鍵入內容。我想抓住這個關鍵的新聞事件。這可能嗎 ? – Sriram

相關問題