JavaFX Java将参数字符串从控制器传递到控制器

时间:2016-03-23 12:02:15

标签: java javafx parameter-passing

似乎我有一些基本的问题,但我无法弄清楚如何解决它,我尝试了一切和atm。我处于这种愤怒模式,似乎没有任何效果,并且注意力消失。

我在这个UserController中有我的UserController我有一个完美的ComboBox,我需要将这个ComboBox中的选定城市作为String参数传递给我的MuseumController中的方法。

它适用于Label,但不适用于我在MuseumController中使用的方法。

以下是UserController的相关代码:

public void SearchM(ActionEvent event) {

    try {
            ((Node) event.getSource()).getScene().getWindow().hide();

            Stage primaryStage = new Stage();

            FXMLLoader loader = new FXMLLoader();

            Pane root = loader.load(getClass().getResource("/application/M_in_City.fxml").openStream());

            MuseenController museenController = (MuseenController) loader.getController();
            museenController.GetCityName(txtComboboxStadt.getValue());
            //museenController.GetOnlyCityName(txtComboboxStadt.getValue());
            Scene scene = new Scene(root);
            scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
            primaryStage.setScene(scene);
            primaryStage.show();

    } catch (IOException e) {

        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

在这个UserController中我将值成功地从我的MuseumController传递到Label中,我的第一个想法是,为什么不拿标签(因为标签已经显示了所需的城市)并从那里获得城市,因为它显示没有工作我不知何故只有默认标签而不是更新的城市名称。

我在博物馆控制器中有一个需要ObserverList和String参数(THE CITY)的函数,该函数运行完美,我用手工字符串试了一下:

@FXML
private Label MuseenInStadtLbl;

@FXML
private ListView<String> ListViewMuseen;

@Override
public void initialize(URL location, ResourceBundle resources) {    
    museenInStadtModel.FillListViewStadt(ListViewMuseen, "Düsseldorf");
}

//public String only_cityname;
/*
public String GetOnlyCityName(String city) {
    return city;
}
*/

public void GetCityName(String city) {
    //only_cityname = city;
    MuseenInStadtLbl.setText("Museen in der Stadt: " + city);
}

所以我需要将“Düssedorf”替换为ComboBox中的值或方法GetCityName中的city参数

我尝试只传递总是导致将字符串设置为null的字符串,因为初始化方法,但是如何做呢?

这个帖子很遗憾没有帮助: Similar Problem on StackOverFlow

我尝试只提供相关代码,FillListViewStadt方法完美运行。如果我错过了什么告诉我,我会更新。

总结:如何将usercontroller中的组合框中的选定值作为字符串参数传递给museencontroller初始化为函数 FillListViewStadt用它替换manualy enetred“Düsseldorf”。

1 个答案:

答案 0 :(得分:2)

initialize()方法在loader.load()上调用,所以在您有机会传递任何参数之前。正确的方法是创建一个不同的方法(就像你对GetCityName()所做的那样)并在那里传递参数。