我有一個KeyboardFocusManager
與覆蓋dispatchKeyEvent()
方法來處理箭頭鍵導航和輸入。只要按下鍵,我就需要處理關鍵事件。不幸的是,按住輸入結果的KEY_TYPED
事件不包含關鍵位置。有沒有辦法找出當前正在按哪個輸入?或者我可以壓制KEY_TYPED
事件以獲得KEY_PRESSED
事件嗎?如何找到KEY_TYPED事件的輸入位置?
編輯: 我不能告訴你爲什麼它使用KeyboardFocusManager而不是KeyListeners來完成,但我確信有這樣做的原因。到目前爲止,不可能再改變這一點。問題是,對於我們的系統(舊的終端仿真器),左側的輸入鍵是一個導航鍵。按下Enter鍵將焦點移動到當前行後的下一個文本字段。右回車鍵是將用戶輸入發送到服務器的命令鍵。
奇怪的問題+1 – mKorbel
我不能告訴你爲什麼它使用KeyboardFocusManager而不是KeyListeners來完成,但我確信有這樣做的原因。到目前爲止,不可能再改變這一點。問題是,對於我們的系統(舊的終端仿真器),左側的輸入鍵是一個導航鍵。按下Enter鍵將焦點移動到當前行後的下一個文本字段。右回車鍵是將用戶輸入發送到服務器的命令鍵。 由於某些原因,在按住Enter鍵時我只會收到一個KEY_PRESSED事件。 – Markus
是否可以將'KeyboardFocusManager'擴展以停止自動重複事件?您可以查看文章[*全球事件調度*](http://tips4java.wordpress.com/2009/09/06/global-event-dispatching/),看看它是否有任何亮點。 – trashgod