【问题标题】:JavaFX Get selected item of a ContextMenu?JavaFX 获取 ContextMenu 的选定项?
【发布时间】:2017-06-25 21:09:29
【问题描述】:

由于您可以使用箭头键在 JavaFX 中导航 ContextMenu,有没有办法检索当前突出显示/选择的 MenuItem?

我基本上是在尝试创建一个自动完成功能,如 Outlook 等使用电子邮件地址,您开始输入并在下面给出建议,您可以按 Tab 键输入选定的菜单操作,而无需使用鼠标。

感谢您的帮助。

【问题讨论】:

  • 我可能会尝试在Popup 中使用ListView 来实现这一点。然后列表视图上的标准选择模型将为您提供所需的内容。

标签: java javafx contextmenu actionevent


【解决方案1】:

当您将 onAction 侦听器添加到上下文菜单时,您可以获取选定的菜单项。 ActionEvent 的目标是您可以进一步处理的选定菜单项。

    contextmenu.setOnAction(e -> System.out.printly(((MenuItem)e.getTarget()).getText()));

【讨论】:

    【解决方案2】:

    尝试改用组合框。它为您提供了一个下拉列表和一个可选的文本框。上下文菜单是一个菜单项,只有将它包装在列表视图或表格视图中才能实现选择模型。

    【讨论】:

    • 你的意思是,例如,创建一个ListView,然后使用一个新的CustomMenuItem(ListView) 来显示列表?我遇到的问题是我需要从 TextField 更改焦点,这不是我想要的。使用上下文菜单,我可以在仍然专注于 TextField 的同时继续输入,如果我包装 ListView,它要么关注 listview(需要点击)要么关注 TextFIeld。
    • 据我所知,上下文菜单的事件处理能力有限。您无法监听菜单项或上下文菜单本身的焦点。这使得应用程序很难知道哪个项目被聚焦。
    • 有没有办法通过扩展类来发现这一点?或者通过检查样式表来查看 MenuItem 是否具有焦点属性?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-17
    • 1970-01-01
    • 2013-06-27
    • 1970-01-01
    • 2019-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多