Java FX 8,设置文本字段的值时出错
我正在尝试填充Java FX中文本字段的值。
我有主类,控制器和fxml.I已将fxml文件与控制器及其中的相应字段绑定。 当我尝试设置其值时,它会失败。
Main.java
import javafx.application.Application; import javafx.fxml.FXMLLoader; import javafx.scene.Scene; import javafx.scene.layout.FlowPane; import javafx.stage.Stage; public class Main extends Application { private Stage primaryStage; private FlowPane rootLayout; @Override public void start(Stage primaryStage) { try { FXMLLoader loader = new FXMLLoader(); loader.setLocation(Main.class.getResource("test.fxml")); rootLayout = (FlowPane) loader.load(); Scene scene = new Scene(rootLayout); primaryStage.setScene(scene); primaryStage.show(); } catch(Exception e) { e.printStackTrace(); } } public static void main(String[] args) { launch(args); } }
testController.java
package application; import javafx.fxml.FXML; import javafx.scene.control.TextField; public class testController { @FXML private TextField t1; public testController() { System.out.println("hi"); t1 = new TextField("j"); t1.setText("hi"); } }
FXML文件:
你是在错误的地方做的! 如果您需要在加载fxml之前使用控件,则需要在initialize()
。 为此,您的控制器应实现Initializable
所以你的控制器变成:
public class testController implements Initializable{ @FXML private TextField t1; public void initialize() { System.out.println("hi"); //You should not re-initialize your textfield //t1 = new TextField("j"); t1.setText("hi"); } }