JavaFX - 无法从 FXML 文件加载节点

标签 java javafx fxml

出于某种原因,我无法将 FXML 文件中定义的节点加载到我的实例变量中。我制作了这两个测试文件:

测试.java:

public class Test extends Application {
    @FXML private TextArea ta;
    @FXML private Label l;

    public void start(Stage primaryStage) {
        Scene scene = null;
        try {scene = new Scene((BorderPane)FXMLLoader.load(Test.class.getResource("ChatServer.fxml")));}
        catch (IOException e) {}

        primaryStage.setScene(scene);
        primaryStage.setTitle("Chat Server");
        primaryStage.show();
        System.out.println(ta);
        System.out.println(l);
    }
}

FXML 文件:

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.text.*?>
<?import javafx.geometry.*?>
<?import javafx.scene.control.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.layout.AnchorPane?>

<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="400.0" xmlns="http://javafx.com/javafx/8.0.40" xmlns:fx="http://javafx.com/fxml/1" fx:controller="Test">
   <top>
      <Label fx:id="l" text="text" BorderPane.alignment="CENTER">
         <BorderPane.margin>
            <Insets bottom="10.0" top="10.0" />
         </BorderPane.margin>
         <font>
            <Font size="13.0" />
         </font>
      </Label>
   </top>
   <center>
      <TextArea fx:id="ta" editable="false" focusTraversable="false" prefHeight="200.0" prefWidth="200.0" BorderPane.alignment="CENTER" />
   </center>
</BorderPane>

两者都是TextAreaLabel打印为 null当它们应该被注入(inject) FXML 文件中定义的节点时,有人知道这里出了什么问题吗?当我在场景生成器中编辑 FXML 文件时, Controller 类和字段都会被找到并识别,因此应该不会有任何问题。

最佳答案

FXMLLoader.load 创建 Test 类的新实例。 所以这将与您当前的类(class)不同。

使用 FXMLLoader 类的 setControllerFactory 方法来更改此行为。

关于JavaFX - 无法从 FXML 文件加载节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36011095/

相关文章:

JavaFX - css 在我的元素中不起作用,但可以在场景生成器中工作

java - 在 Java 中解析大的十六进制数

java - 使用 jaxb 时出现编码(marshal)异常

svg - 如何简化SVG代码?

javafx TextArea 抛出 NullPointerException

java - 访问不同 fxml 文件中的 ui 元素

java - 如何使用Java的BufferedReader和InputStreamReader读取文件?

java - 高流量环境下使用kafka producer时的连接管理

java - 将 PATH 保存到文件

javafx 在适当的 Controller 类中使用 MainController 或其他 Controller 中的对象