是否可以通过其他方式初始化/启动一个fxml文件?

时间:2019-05-03 10:41:36

标签: java javafx initialization fxml stage

我有一个带有一些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();
        }
    }

0 个答案:

没有答案