Java 捕获并输入KeyEvent,然后单击
我已经在默认的FocusTraversalKeys中添加了ENTER键Java 捕获并输入KeyEvent,然后单击,java,awt,capture,keylistener,keyevent,Java,Awt,Capture,Keylistener,Keyevent,我已经在默认的FocusTraversalKeys中添加了ENTER键 private void focus() { Set forwardKeys = getFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS); Set newForwardKeys = new java.util.HashSet(forwardKeys); newForwardKeys.add(KeyStroke.getKeyS
private void focus() {
Set forwardKeys = getFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS);
Set newForwardKeys = new java.util.HashSet(forwardKeys);
newForwardKeys.add(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0));
setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, newForwardKeys);
}
我有一个产品信息表单,我正在使用焦点查看该表单,但是当涉及到保存按钮时,我希望单击按钮,而不是将焦点转到下一个组件
我已经添加了一个按键按下和按键释放监听按钮,然后尝试了这个
private void saveButtonKeyPressed(java.awt.event.KeyEvent evt) {
if (evt.getKeyCode() == java.awt.event.KeyEvent.VK_ENTER) {
evt.consume();
saveButton.doClick();
}
}
同样的方法也适用于我的文本区域,但是代码没有点击,而是将焦点放在下一个组件上,这也是一个按钮
请提出一些能帮助我达到要求结果的建议。请在下面找到所用表单的图像
不要使用键盘侦听器。Swing的设计目的是配合使用
查看一些解决方案,一个使用键绑定,另一个使用不同的方法。在按钮获得焦点时从我定义的集合中删除了ENTER键,因此它现在可以与KeyReleased方法一起工作
private void saveButtonFocusGained(java.awt.event.FocusEvent evt) {
newForwardKeys.remove(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0));
setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, newForwardKeys);
}
谢谢大家的帮助 您可以将按钮的焦点转移键设置为默认值(即
TAB
),这意味着ENTER
键将作为默认值执行…@MadProgrammer这是我已经做过的,请将该帧中所有内容的焦点遍历键设置为包括ENTER键。我想在按钮上做“空格键”效果,而不是将焦点转移到下一个组件。你也可以为单个组件设置焦点转移键。在您提供的链接中使用DefaultButtonListener类查看更多详细信息,但没有帮助。