gpt4 book ai didi

java - 防止 Enter 事件冒泡到主窗口

转载 作者:太空宇宙 更新时间:2023-11-04 08:47:47 25 4
gpt4 key购买 nike

我有一个名为 NavigationLink 的自定义 Swing 组件,它扩展了 JLabel 并实现了一个关键事件监听器,如下所示:

addKeyListener(new KeyAdapter() {
public void keyReleased(KeyEvent e) {
boolean actionInvoked = e.getKeyCode() == KeyEvent.VK_ENTER || e.getKeyCode() == KeyEvent.VK_SPACE;
if (actionInvoked && NavigationLink.this.clickAction != null) {
NavigationLink.this.clickAction.run();
}
}
});

clickAction 是一个 Runnable,它打开一个 JOptionPane.showMessageDialog,其中包含一个按钮“确定”。所有这些工作正常,问题如下:

  1. 用户使用 TAB 导航至 NavigationLink,直到成为焦点
  2. 按 ENTER 键打开对话框消息,默认情况下“确定”按钮处于焦点状态
  3. 用户按 ENTER 键关闭对话框,但也会导致 NavigationLink 中的 keyReleased 事件触发,立即再次打开对话框!

如何在处理完 ENTER 事件后取消该事件,但取消对话框“确定”按钮?

最佳答案

不要使用 KeyListener。

您应该使用Key Bindings将 Enter 键绑定(bind)到操作。

关于java - 防止 Enter 事件冒泡到主窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3992347/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com