gpt4 book ai didi

java - 将 FXML 与 "pure javafx"代码混合

转载 作者:行者123 更新时间:2023-12-01 11:54:00 24 4
gpt4 key购买 nike

我有一个应用程序,其中 UI 大部分是使用 FXML 构建的。但我试图添加一个菜单栏,并且我使用“纯java”而不使用FXML。我没有收到错误,但菜单栏不可见。我做错了什么?

代码如下:

Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));


Scene scene = new Scene(root);

stage.setScene(scene);
stage.show();

MenuBar menubar = new MenuBar ();
Menu file = new Menu ("File");
Menu options = new Menu ("options");
Menu help = new Menu ("help");

MenuItem save = new MenuItem ("save");
MenuItem close = new MenuItem ("close");
MenuItem open = new MenuItem ("open");
MenuItem exit = new MenuItem ("exit");

file.getItems().addAll(save, close, open, new SeparatorMenuItem(),exit);


Menu color = new Menu ("Colors");
Menu prefs = new Menu ("Preferences");

options.getItems().addAll(color, prefs);

MenuItem red = new MenuItem ("red");
color.getItems().add(red);

MenuItem setExample = new MenuItem ("SetExample");
prefs.getItems().add(setExample);


//root.getChildren().add(menubar);
menubar.getMenus().addAll(file, options, help);
BorderPane root2 = new BorderPane();
root2.setTop(menubar);

最佳答案

首先,您的 fxml 文件需要一个 Controller 类。

参见http://docs.oracle.com/javase/8/javafx/api/javafx/fxml/doc-files/introduction_to_fxml.html#controllers该架构的示例

您可以通过 @FXML 注释注入(inject)所有组件。

那么正确的方法是在 fxml 文件中定义一个区域元素作为菜单栏的容器元素

最后,将菜单栏添加到区域元素的子元素中。该代码放置在您的 Controller 类中。

关于java - 将 FXML 与 "pure javafx"代码混合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28579753/

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