繁体   English   中英

捕获ENTER KeyEvent并单击

[英]Capture ENTER KeyEvent and Do a Click instead

我已经将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();
    }
}  

同样的方法适用于我的“文本区域”,但是代码不执行“单击”操作,而是将重点放在下一个也是按钮的组件上。

请提出一些有助于我达到所需结果的建议。 在下面找到所用表格的图像。

http://tinypic.com/r/33acqy9/5

不要使用KeyListener。 Swing被设计为与键绑定一起使用。

签出Enter Key and Button以获得一些解决方案,一种使用键绑定,另一种使用不同的方法。

当按钮获得焦点时,从定义的SET i中删除了ENTER键,因此现在可以使用KeyReleased方法。

private void saveButtonFocusGained(java.awt.event.FocusEvent evt) {                                       
    newForwardKeys.remove(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0));  
    setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, newForwardKeys);
}  

谢谢你们每一个人的帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM