【发布时间】:2013-06-20 09:09:21
【问题描述】:
我已将 ENTER 键添加到默认的 FocusTraversalKeys 中......
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);
}
我有一个产品信息表单,我正在使用焦点进行操作,但是当涉及到保存按钮时,我想单击按钮,而不是将焦点转到下一个组件。
我已经为按钮添加了 KeyPressed 和 KeyReleased 侦听器,然后尝试了这个...
private void saveButtonKeyPressed(java.awt.event.KeyEvent evt) {
if (evt.getKeyCode() == java.awt.event.KeyEvent.VK_ENTER) {
evt.consume();
saveButton.doClick();
}
}
同样的方法适用于我的文本区域,但代码不执行 CLICK,而是将焦点放在下一个也是按钮的组件上。
请提出一些可以帮助我达到所需结果的建议。在所用表格的图片下方查找。
【问题讨论】:
-
您可以将按钮的焦点转移键设置为默认(即
TAB),这意味着ENTER键将默认执行... -
@MadProgrammer 这就是我已经做过的,设置该框架中所有内容的焦点遍历键以包括 ENTER 键。我想在按钮上做“空格键”效果,而不是将焦点转移到下一个组件。
-
您也可以为单个组件设置焦点转移键。查看answer by kleo了解更多详情
标签: java awt capture keylistener keyevent