2017-04-09 1 views
0

내 장면 homestart의 장면으로 사용하려고합니다.
그러나 작동하지 않고 내 300 x 300을 얻지 않고 빈 900 x 400 화면을 얻습니다. 아마도 그것은 매우 쉽게 감지 할 수있는 것이지만 나는 그것을 보지 않을 것입니까?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(); 
    } 

내가 start에서 그들을 유지할 수 있도록 방법으로 내 장면을 만들려고 해요.
나중에 모두 btn.setOnAction(e -> window.setScene(anotherScene));을 사용하여 장면간에 전환하는 것이 좋습니다. 미리 감사드립니다.

답변

1

home 메서드는 절대로 호출하지 마십시오. 따라서 home 필드는 null으로 유지되며이 값은 window.setScene으로 전달됩니다.

또한 나는 home 방법은 이상한 방식으로 구현되어 호출 것 :

public Scene home(Scene home) { 

매개 변수를 읽어 본 적이있다. 자바는 통화로 값이기 때문에 그것이 효과가 없습니다 장면을 반환하기 전에

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

이하지 장면에, 에 메서드 매개 변수을 값을 할당합니다.

이처럼 구현할 수 :

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