【问题标题】:JavaFX adding FXML to and plain java controllersJavaFX 将 FXML 添加到普通 Java 控制器
【发布时间】:2018-08-03 20:13:42
【问题描述】:

我的第一篇文章,请温柔。

我正在为一个简单的游戏制作 JavaFX GUI。 我在这里通过 FXML 文件加载器加载了 FXML 布局:

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

然后我在 Main.java 中创建一个按钮:

Button button = new Button("Jp", view);

为了显示:

primaryStage.setScene(new Scene(root));
primaryStage.show();

问题:我到底如何将 FXML 布局和纯 java Button 对象组合在同一个场景中?是不是像苹果和橙子一样,无法结合? 我的 IDE 不允许我调用 java 文档推荐的方法:

root.getChildren().add();

等等……

请帮助我和/或指出一些方向,我真的尝试过......

【问题讨论】:

    标签: java javafx fxml fxmlloader


    【解决方案1】:

    getChildren() method defined in Parent 是一个protected 方法:因此您无法从您的Main 类访问它,这就是您的代码无法编译的原因。

    Pane overrides this method 并使其成为public,因此假设您的 FXML 文件的根元素是 Pane(或 Pane 的子类),您只需要更具体地了解根的类型。换句话说,再次假设您的 FXML 符合我的预期,更改

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

    Pane root = FXMLLoader.load(getClass().getResource("sample.fxml"));
    

    【讨论】:

    • 感谢一百万 James_D !我会去买一些 HBox 和其他容器,看看有什么好用的。只是需要它来测试一些解决方案。
    猜你喜欢
    • 2013-03-04
    • 2013-12-25
    • 2013-07-22
    • 1970-01-01
    • 2012-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多