2017-04-09 2 views
0

J'essaie d'utiliser ma scène, home, comme scène dans start.
Cependant, cela ne fonctionne pas et au lieu d'obtenir mon 300 x 300, je reçois un écran vide de 900 x 400. Peut-être que c'est quelque chose de très facilement détectable mais je ne le vois pas?Utilisation de méthodes autonomes pour chaque scène dans JavaFX

private Scene home; 
    private Stage window;  

    public Scene home(Scene home) { 
     // build my scene 
     return home = new Scene(root, 300, 300); 
    } 

    @Override 
    public void start(Stage primaryStage) throws Exception { 
     window = primaryStage; 
     window.setScene(home); 
     window.show(); 
    } 

Je suis en train de créer mes scènes que les méthodes pour que je puisse les garder hors de start.
Le plan est de basculer entre les scènes plus tard en utilisant: btn.setOnAction(e -> window.setScene(anotherScene));, merci d'avance tout le monde!

Répondre

1

Vous n'appelez jamais la méthode home. Par conséquent, le champ home reste null, valeur que vous transmettez à window.setScene.

De plus, je dirais que la méthode home est mise en œuvre d'une manière étrange:

public Scene home(Scene home) { 

Le paramètre est jamais lu.

return home = new Scene(root, 300, 300); 

Cela affecte la valeur le paramètre méthode, pas la scène avant de retourner la scène, qui n'a pas d'effet, puisque java est appel par valeur.

Vous pouvez la mettre en œuvre comme ceci:

private Scene home; 
private Stage window;  

public Scene home() { 
    if (home == null) { 
     // build my scene 
     home = new Scene(root, 300, 300) 

     // or maybe do this without testing, if the scene was created before??? 
    } 
    return home; 
} 

@Override 
public void start(Stage primaryStage) throws Exception { 
    window = primaryStage; 
    window.setScene(home()); // use the method here 
    window.show(); 
}