我可以使用从另一个控制器获得的参数到当前的可初始化对象吗?

Can I use a parameter I get from another controller to the current initializable?

我有两个不同的控制器,但是通过在其中一个上获得某个值,我想在第二个控制器的可初始化对象上使用它。

这是第一个控制器向另一个控制器发送区域参数的部分

    public void enterlevel(String x) throws IOException{

    FXMLLoader Loader=new FXMLLoader();

    Loader.setLocation(getClass().getResource(x));

    Loader.load();

    regionalController reg=Loader.getController();
    reg.getRegion(region);


    //System.out.println(region);

    Parent root = Loader.getRoot();

    Stage primaryStage = new Stage();
    Scene scene = new Scene(root);

    primaryStage.setTitle("Ziga Ziga");
    primaryStage.setScene(scene);
    primaryStage.setMaximized(true);
    primaryStage.setResizable(false);
    primaryStage.show();


    Stage stage = (Stage) loginButton.getScene().getWindow();
    stage.close();

}

这是第二个控制器获取它的地方

    public void getRegion(String region) {
    System.out.println(region+" UO UO UO ");
    regi=region;
    }

这是可初始化的,我不能在它开始时使用它的值

public void initialize(URL arg0, ResourceBundle arg1) {     
    System.out.println(regi);
    try{
        Class.forName("com.mysql.jdbc.Driver");  
        Connection con=DriverManager.getConnection("jdbc:mysql://localhost/bimbima","root","");  
        Statement stmt=con.createStatement();  
        ResultSet rs=stmt.executeQuery("SELECT * FROM  `file` WHERE Region = '"+regi+"'");  
        while(rs.next())  {
        filename=rs.getString("filename");
        nameofSup=rs.getString("Name of Supervisor");
        System.out.println(filename);
        }
        con.close();  
        }catch(Exception e){ System.out.println(e);}  
}

旁白:您的 getRegion(...) 方法肯定应该被称为 setRegion(...),因为它会更改 属性 的值,并且不会 return 任何东西。

只需更改第二个控制器中的代码,以便您仅在知道区域时才从数据库中检索值:

public void initialize(URL arg0, ResourceBundle arg1) {     
}

public void setRegion(String region) {
    regi=region;
    try{
        Class.forName("com.mysql.jdbc.Driver");  
        Connection con=DriverManager.getConnection("jdbc:mysql://localhost/bimbima","root","");  
        Statement stmt=con.createStatement();  
        ResultSet rs=stmt.executeQuery("SELECT * FROM  `file` WHERE Region = '"+regi+"'");  
        while(rs.next())  {
        filename=rs.getString("filename");
        nameofSup=rs.getString("Name of Supervisor");
        System.out.println(filename);
        }
        con.close();  
    } catch(Exception e) { 
        e.printStackTrace();
    }  
}