有沒有辦法將按鍵從JTextField
傳播到其容器的KeyListener
實施?通過聚焦組件及其容器捕獲「Tab」鍵
所以實際上,按鍵會被文本字段和JPanel
處理。現在文本字段正在消耗按鍵,因此不存在於下面的JPanel
。
有沒有辦法將按鍵從JTextField
傳播到其容器的KeyListener
實施?通過聚焦組件及其容器捕獲「Tab」鍵
所以實際上,按鍵會被文本字段和JPanel
處理。現在文本字段正在消耗按鍵,因此不存在於下面的JPanel
。
在Swing中,選項卡鍵用於將焦點從一個組件更改爲另一個組件。文章Validating Input討論了InputVerifier
,這可能會幫助你做你想做的事。
問題是爲什麼你想這樣做?你的實際需求是什麼,反對你試圖解決的問題。由兩個組件處理事件通常不是一個好主意。
一般而言,您不應該使用KeyListeners。 Swing旨在使用Key Bindings。但是,在這種情況下,它不會起作用,因爲如前所述,焦點子系統處理選項卡鍵。
如果這是您的問題的唯一解決方案,那麼我認爲您可以使用KeyEventPostProcessor
來偵聽任何KeyEvent。有關更多信息,請參閱Global Event Listeners。
我已經構建了一個包含各種搖擺輸入的類組件(JTextFields,JComboBox,JLabel等)都在一個JPanel內,並且具有常規工具欄的高度。如果有太多的小部件添加到欄中,某些組件將隱藏在屏幕之外。由於用戶將使用Tab鍵從一個組件跳轉到另一個組件,因此我想通過底層的JPanel來捕獲Tab鍵,這樣如果他們試圖「跳到」屏幕上的某個組件,它將觸發所有組件的「移位」到左邊並重新佈置面板,並具有先前隱藏的組件可見和聚焦。 – cholland
特別是我正在捕捉「Tab」按鍵 – cholland
選項卡在Java Swing應用程序中有特殊含義,通常由[focus subsystem](http://download.oracle.com/javase/tutorial/uiswing/)管理misc/focus.html)及其[FocusTraversalPolicy](http://download.oracle.com/javase/6/docs/api/java/awt/FocusTraversalPolicy.html) –