java - Java Swing 源代码中的何处是菜单上 Enter 按键的实现?

标签 java swing keypress custom-component jmenu

我正在研究一个分层菜单,试图使其可滚动。是的,我在 Java Tips Weblog 上了解了 Menu Scroller,但它并不能完全满足我的要求,所以我一直在研究它的精简版本,但还没有完全让它发挥作用。

基本上,我想要一个包含太多项目的 JMenu,用户可以在其中按向上和向下箭头键滚动菜单。我已经非常接近我想要的东西,但我遇到了一个障碍,我可以这样最好地描述它:

当弹出菜单具有焦点时按下 [ENTER],默认行为是执行与所选项目关联的操作并释放菜单。如果菜单是嵌套的,则层次结构中位于其上方的弹出窗口也会关闭(变得不可见)。此行为在哪里编码?我已经浏览了 JMenu、JPopupMenu、JMenuItem、AbstractButton,但没有看到我在寻找什么。执行这种常见行为的 Swing 源代码在哪里?

如果我知道这个问题的答案,我可能会明白为什么我的实现不起作用。我可以执行该操作,但菜单及其父项不会消失。当然,我可以通过 setVisible(false) 使菜单消失,但我无法遍历包含层次结构来找到父菜单并使它们消失。

最佳答案

I can do the action, but the menu and its parents won't disappear.

我认为你可以使用:

MenuSelectionManager.defaultManager().clearSelectedPath() 

关于java - Java Swing 源代码中的何处是菜单上 Enter 按键的实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18223183/

相关文章:

java - 将文件分配给图像编译错误: javax. imageio.IIOException

c - GTK 按键事件传播要么导致递归,要么不起作用

java - Apache Wicket - 自定义 servlet

java - 包括来自外部java文件的面板?

java - 如何从表模型中获取选定的行?

c# - 使特定列仅接受按键事件中datagridview中的数值

actionscript-3 - ActionScript 3键释放停止声音

java - 如何正确处理 TextField 绑定(bind)并将节点引用与任务分开

java - 推特列表 twitter4j

java - 如何停止在 java.util.Timer 类中安排的任务