我可以使用从另一个控制器获得的参数到当前的可初始化对象吗?
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();
}
}
我有两个不同的控制器,但是通过在其中一个上获得某个值,我想在第二个控制器的可初始化对象上使用它。
这是第一个控制器向另一个控制器发送区域参数的部分
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();
}
}