Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我是否可以将从另一个控制器获得的参数用于当前的可初始化项?_Java_Javafx_Fxml_Scenebuilder - Fatal编程技术网

Java 我是否可以将从另一个控制器获得的参数用于当前的可初始化项?

Java 我是否可以将从另一个控制器获得的参数用于当前的可初始化项?,java,javafx,fxml,scenebuilder,Java,Javafx,Fxml,Scenebuilder,我有两个不同的控制器,但是通过在其中一个控制器上获得某个值,我想在第二个控制器的初始化中使用它 这是第一个控制器向另一个控制器发送区域参数的部分 public void enterlevel(String x) throws IOException{ FXMLLoader Loader=new FXMLLoader(); Loader.setLocation(getClass().getResource(x)); Loader.load(); re

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

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

    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(…)
,因为它更改属性的值,并且不返回任何内容

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

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

非常感谢,那
getRegion(…)
只是停留在那里,因为我以前用它来做其他事情。