0
出於某種原因,我無法將定義在FXML文件中的節點加載到我的實例變量中。我做了這兩個測試文件:JavaFX - 無法從FXML文件加載節點
Test.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>
無論是TextArea
和Label
被打印出來null
時,他們應該已經注入在FXML文件中定義節點時,有人知道這裏有什麼問題嗎?當我在Scene Builder中編輯FXML文件時,控制器類和字段都會被找到並識別,所以應該沒有任何問題。