将FXML与“纯javafx”代码混合使用

时间:2015-02-18 09:13:09

标签: java xml javafx

我有一个应用程序,其中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);

1 个答案:

答案 0 :(得分:1)

首先,您需要一个fxml文件的控制器类。

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

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

然后正确的方法是将fxml文件中的region元素定义为您的菜单栏的容器元素

最后,将菜单栏添加到region元素的子元素中。该代码放在您的控制器类中。