2017-06-06 1 views
0

J'ai deux contrôleurs différents, mais en obtenant une certaine valeur à l'un d'eux, je veux l'utiliser à l'initialisation du second contrôleur.Puis-je utiliser un paramètre que je reçois d'un autre contrôleur pour le courant initialisable?

C'est la partie où le premier contrôleur envoie le paramètre région à l'autre controleur

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

} 

C'est là que le deuxième contrôleur, il obtient

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

Et c'est le initialisable où Je ne peux pas utiliser la valeur au démarrage

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

Merci beaucoup, que 'getRegion (...)' juste coincé là parce que je l'utilisais avant pour autre chose. – Eixhani

Répondre

1

A part: votre méthode getRegion(...) doit sûrement s'appeler setRegion(...) car elle modifie la valeur d'une propriété et ne renvoie rien.

il suffit de changer le code dans le second contrôleur afin que vous récupérer uniquement les valeurs de la base de données lorsque vous connaissez la région:

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