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 中的關鍵事件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!