我已将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);
}
我有一个产品信息表单,我正在使用焦点,但是当涉及到保存按钮时,我想点击按钮而不是焦点转到下一个组件。< / p>
我在按钮上添加了一个KeyPressed和KeyReleased侦听器,然后尝试了这个...
private void saveButtonKeyPressed(java.awt.event.KeyEvent evt) {
if (evt.getKeyCode() == java.awt.event.KeyEvent.VK_ENTER) {
evt.consume();
saveButton.doClick();
}
}
这个方法适用于我的文本区域,但代码不执行CLICK,而是将焦点放在下一个也是按钮的组件上。
请提出一些可以帮助我达到要求的结果。在下面找到所用表格的图像。
答案 0 :(得分:1)
不要使用KeyListener。 Swing旨在与Key Bindings一起使用。
查看Enter Key and Button的某些解决方案,一个使用键绑定,另一个使用不同的方法。
答案 1 :(得分:0)
当按钮获得焦点时,从我定义的SET中删除了ENTER键,因此它现在可以与KeyReleased Method一起使用。
private void saveButtonFocusGained(java.awt.event.FocusEvent evt) {
newForwardKeys.remove(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0));
setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, newForwardKeys);
}
谢谢大家的帮助!