JavaFX Java 在 Controller 之间传递参数字符串

标签 java javafx parameter-passing

我似乎有一些基本问题,但我不知道如何解决它,我尝试了所有方法和 atm。我正处于这种愤怒模式,似乎什么都不起作用,注意力也逐渐消失。

我的 UserController 位于此 UserController 中,我有一个运行完美的 ComboBox,我需要将此 ComboBox 中选定的城市作为字符串参数传递给我的 MuseumController 中的方法。

它适用于标签,但不适用于我在 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 传递到标签中,我的第一个想法是,为什么不采用标签(因为标签已经显示了所需的城市)并从那里获取城市,但没有成功,因为它显示不知何故,我只有默认标签,而不是带有城市名称的更新标签。

MuseumController,其中我有一个需要 ObserverList 和字符串参数(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 方法中的城市参数

我尝试只传递字符串,但总是导致将字符串设置为空,这是因为初始化方法的原因,但是该怎么做呢?

遗憾的是,该线程没有帮助: Similar Problem on StackOverFlow

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

总结:如何将用户 Controller 中组合框中的选定值作为字符串参数传递到从 mueencontroller 到函数的初始化中 填充ListViewStadt并用它替换手动输入的“Düsseldorf”。

最佳答案

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

关于JavaFX Java 在 Controller 之间传递参数字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36177655/

相关文章:

java - Java中的十六进制转换错误

java - 更新和删除不适用于 Spring Boot 应用程序

java - 在 JavaFX 中显示复杂的印度孟加拉语字体

javafx - JavaFX 下的全屏与 FXML

ios - 使用InstantiateViewControllerWithIdentifier通过UITableViewController传递数据

java - 将 Class 对象传递给方法

java - GAE : Incoming emails can not preserve format

java - 自定义帐户存储库如何成为一个没有任何注释的 bean?

java - 如何将本地 html 文件(不在我的类路径中)加载到 WebView?

parameter-passing - SAP UI5 - 如何为 Controller 传递值?