我有一个带有一些TextField的fxml文件。当按下两个按钮时,我将此fxml文件作为新阶段打开。但是,当我按下按钮1时,我的Texfield中将有一些“文本”,而当按下按钮2时,我的TextField中将有一些“ Text2”。因此,我加载了相同的fxml文件,但是具有不同的初始化方法。但是不可能有多个初始化方法。你知道什么解决方案吗?所以我的主要问题是,文本甚至都没有出现。所以通常,当我加载fxml时,文本必须出现在TextField中。
我已经尝试使用称为“ startOption”的另一种方法进行此操作,该方法在初始化中调用。我也尝试过在start方法中编写TextField.setText,但是文本没有出现。
我的NewOrderController扩展了Application,这些是方法。
@Override
public void start(Stage newOrderStage) throws Exception {
try {
BorderPane root = FXMLLoader.load(getClass().getResource("NewOrder.fxml"));
Scene newOrderScene = new Scene(root, 600, 400);
newOrderScene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
newOrderStage.setTitle("Kundenerfassung");
newOrderStage.setResizable(false);
newOrderStage.setScene(newOrderScene);
newOrderStage.show();
} catch (Exception e) {
e.printStackTrace();
}
}
@FXML
public void initialize() {
try {
nameTextField.setEditable(true);
nameTextField.setText(a);
streetTextField.setText(NewCustomerController.customerStreet);
cityTextField.setText(NewCustomerController.customerCity);
countryTextField.setText(NewCustomerController.customerCountry);
} catch (Exception e) {
}
}
protected void startOptions(String a){
System.out.println(a);
this.a = a;
}
在我的其他Stage Controller中,我有一种方法可以将fmxl打开/加载为新Stage:
@FXML
protected void createOrder(ActionEvent event) throws IOException {
try {
NewOrderController newOrder = new NewOrderController();
newOrder.startOptions("TESTTESTTEST");
newOrder.start(newOrderStage);
} catch (Exception e) {
e.printStackTrace();
}
}