gpt4 book ai didi

java - 如何获取 JavaFX 菜单的父菜单栏

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:00:53 25 4
gpt4 key购买 nike

我无法在 JavaFX Menu 类中找到允许我检索父 MenuBar 的 API。非常欢迎任何提示,包括内部 API 的使用。 (JavaFX 8)

背景:通常任何 JavaFX Node 都可以使用 getParent() 方法为您提供它的父节点。但是由于 MenuMenuItem 没有继承自 Node,所以这种可能性是不存在的。 MenuItem 类(因此也是 Menu 类)有两个相似的方法:

  • getParentPopup() 获取父 ContentMenu
  • getParentMenu() 获取父级 Menu

所以我期望像 getParentMenuBar() 这样的东西,但它不存在。

编辑:我刚刚找到了此 API 扩展的 jira 功能请求: https://bugs.openjdk.java.net/browse/JDK-8091154

有没有人找到解决方法?

最佳答案

我想问为什么您需要从 Menu 返回 MenuBar 的访问权限,您要解决什么问题?

一种可能的方法是使用 arbitrary properties map如本示例所示,在 Node 上存储从 Menu 到 MenuBar 的引用。

public class MenuToMenuBar extends Application {
public static void main(String args[]) {
launch(args);
}

@Override
public void start(Stage stage) throws Exception {
MenuBar bar = new MenuBar();
stage.setScene(new Scene(bar));
Menu menu = new Menu("Foo");

MenuItem menuItem = new MenuItem("Baz");
menu.getItems().add(menuItem);
bar.getMenus().add(menu);

// put a reference back to MenuBar in each Menu
for (Menu each : bar.getMenus()) {
each.getProperties().put(MenuBar.class.getCanonicalName(), bar);
}

menuItem.setOnAction((e) -> {
// retrieve the MenuBar reference later...
System.out.println(menuItem.getParentMenu().getProperties().get(MenuBar.class.getCanonicalName()));
});
stage.show();
}
}

关于java - 如何获取 JavaFX 菜单的父菜单栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29368500/

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