我可以使用从其他控制器获取的参数到当前可初始化的参数吗?

时间:2017-06-06 20:27:12

标签: java javafx fxml scenebuilder

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

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

    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);}  
}

1 个答案:

答案 0 :(得分:1)

除此之外:您的getRegion(...)方法肯定应该调用setRegion(...),因为它会更改属性的值,并且不会返回任何内容。

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

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();
    }  
}