点击jButton能否模拟触发ENTER键事件并传递给当前聚焦的jTextField?
你可以通过构造KeyEvent并派发给当前获得焦点的JTextField组件,完全模拟键盘按下Enter键的效果,原有你写的Event.getKeyCode()==10的处理逻辑不需要做任何修改。
按钮点击事件的实现代码如下:
yourButton.addActionListener(e -> { // 获取当前聚焦的组件 Component focusOwner = KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner(); // 仅在聚焦对象为JTextField时触发事件 if (focusOwner instanceof JTextField) { JTextField targetField = (JTextField) focusOwner; // 构造Enter键按下事件 KeyEvent enterEvent = new KeyEvent( targetField, KeyEvent.KEY_PRESSED, System.currentTimeMillis(), 0, KeyEvent.VK_ENTER, KeyEvent.CHAR_UNDEFINED ); // 派发事件,触发原有绑定的Enter键处理逻辑 targetField.dispatchEvent(enterEvent); } });
说明:
- 该方案会自动识别光标当前所在的输入框,触发对应输入框的Enter按键处理逻辑,和真实物理键盘按下Enter的效果完全一致,不需要调用
grabFocus()等其他方法,也不需要调整你之前为各个字段编写的事件代码。 - 如果你需要触发完整的Enter按键流程(按下、输入、释放),可以按照同样的逻辑构造
KeyEvent.KEY_RELEASED、KeyEvent.KEY_TYPED类型的事件派发给目标组件即可。
内容的提问来源于stack exchange,提问作者Hasan Dulanga
相关产品推荐
相关产品推荐

