Java Swing获取输入
如何更改此代码以接受任何密钥(不仅仅是F5)并打印密钥Java Swing获取输入,java,swing,key-bindings,Java,Swing,Key Bindings,如何更改此代码以接受任何密钥(不仅仅是F5)并打印密钥 component.getRootPane().getInputMap(JRootPane.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_F5, 0), "F5 Pressed"); component.getRootPane().getActionMap().put("F5 Pressed", new AbstractAction() { @Overr
component.getRootPane().getInputMap(JRootPane.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_F5, 0), "F5 Pressed");
component.getRootPane().getActionMap().put("F5 Pressed", new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
// Code here
}
});
我怎样才能(“cahnhe”)此代码接受任何键(不仅仅是F5)并打印
钥匙
- 对不起,这个问题没有什么意义,用这种形式
- 基本是,
只能对有效,实际上只有component.getRootPane()
具有可访问性JFrame
RootPane
- 否则,添加到所需的
- 对不起,这个问题没有什么意义,用这种形式
- 基本是,
只能对有效,实际上只有component.getRootPane()
具有可访问性JFrame
RootPane
- 否则,添加到所需的
KeyboardFocusManager
注册KeyEventDispatcher
:
KeboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(new KeyEventDispatcher() {
@Override
public boolean dispatchKeyEvent(KeyEvent ke) {
if (yourComponent.hasFocus && ke.getID == KeyEvent.KEY_TYPED) {
// Your code here
// Use ke.getKeyChar() to detect which key was pressed.
}
}
}
使用
KeyboardFocusManager
注册KeyEventDispatcher
:
KeboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(new KeyEventDispatcher() {
@Override
public boolean dispatchKeyEvent(KeyEvent ke) {
if (yourComponent.hasFocus && ke.getID == KeyEvent.KEY_TYPED) {
// Your code here
// Use ke.getKeyChar() to detect which key was pressed.
}
}
}
您可能正在寻找一个。您不能-键绑定用于特定的击键。您想要实现什么?似乎您想要添加键盘上要映射到此组件的每个键。同时,您希望用最少的代码来完成它。我希望我是在描述你的情况。请确实替换cahnhe以进行更改,似乎您打算编写后者,但键入了前者:-)您可能正在查找。您不能-键绑定用于特定的击键。您想要实现什么?似乎您想要添加键盘上要映射到此组件的每个键。同时,您希望用最少的代码来完成它。我希望我是在描述你的情况。请务必替换卡恩赫以进行更改,似乎您打算编写后者,但键入了前者:-)