簡體   English   中英

將FXML與“純javafx”代碼混合

[英]Mix FXML with “pure javafx” code

我有一個應用程序,其中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文件的控制器類。

有關該架構的示例,請參見http://docs.oracle.com/javase/8/javafx/api/javafx/fxml/doc-files/introduction_to_fxml.html#controllers

在那里,您可以通過@FXML批注注入所有組件。

正確的方法是將fxml文件中的region元素定義為菜單欄的容器元素

最后,將菜單欄添加到region元素的子元素中。 該代碼位於您的控制器類中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM