JFrame 無回應的KeyListener:穩健的解決方案
雖然為JFrame 實現的解決方案
雖然為JFrame 實現的解決方案建立一個自訂 KeyEventDispatcher 類別來重寫dispatchKeyEvent 方法。在此方法中,我們根據 KeyEvent 的 ID 定義適當的操作。
public class MyFrame extends JFrame { private class MyDispatcher implements KeyEventDispatcher { @Override public boolean dispatchKeyEvent(KeyEvent e) { if (e.getID() == KeyEvent.KEY_PRESSED) { System.out.println("tester"); } else if (e.getID() == KeyEvent.KEY_RELEASED) { System.out.println("2test2"); } else if (e.getID() == KeyEvent.KEY_TYPED) { System.out.println("3test3"); } return false; } } public MyFrame() { add(new JTextField()); System.out.println("test"); KeyboardFocusManager manager = KeyboardFocusManager.getCurrentKeyboardFocusManager(); manager.addKeyEventDispatcher(new MyDispatcher()); } public static void main(String[] args) { MyFrame f = new MyFrame(); f.pack(); f.setVisible(true); } }在 JFrame 建構子中,將 KeyEventDispatcher 的新實例新增至 KeyboardFocusManager。 在您的應用程式中利用此修改後的JFrame .透過添加KeyEventDispatcher,我們可以保證按鍵事件被調度到我們的自訂事件處理程序,無論各個元件的焦點狀態如何。這種方法為 KeyListener 無回應問題提供了一個強大的解決方案,使我們能夠有效地處理按鍵事件。 這是一個範例實作:這段程式碼不僅驗證了 JFrame 的焦點,也驗證了 JFrame 的焦點。採用自訂的KeyEventDispatcher來全面處理按鍵事件。透過採用這種技術,您可以克服與 KeyListener 相關的響應性問題,並確保 JFrame 應用程式中可靠的事件處理。
以上是即使沒有焦點,如何處理 JFrame 中的關鍵事件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!