Java/JavaFX 개념

Java FX // 개념// Scene

문스코딩 2018. 7. 26. 17:40

JAVA FX

Scene

업데이트 :: 2018.07.26



Scene 이동

public void bandleBtnLogin(ActionEvent event) { try { Parent login = FXMLoader.load(getClass().getResource("login.fxml")); Scene scene = new Scene(login); Stage primaryStage = (Stage) ((Node) event.getSource()).getScene().getWindow(); primaryStage.setScene(scene); } catch (Exception e) { e.printStackTrace(); } }

다음은 컨트롤러의 이벤트 처리에서 페이지 이동을 하는 코드입니다.

"setScene()" 메소드를 사용하면 이전 Scene은 Stage에서 제거됩니다.

Scene 간에 데이터 전달

다음 setUserData / getUserData 함수를 통해 Scene간에 데이터를 전달할 수 있습니다.

this.primaryStage.setUserData(shareObject);
this.primaryStage.getUserData();

Scene을 싱글톤 전역객체로 관리하기

Scene을 어디서든 사용할 수 있도록 Singleton 처리 합니다. 

primaryStage에 대한 접근이나, 

Scene을 이용하는 경우 다음 SceneManager를 통해 할 수 있습니다.

public class SceneManager {
    private static SceneManager instance;
    Stage stage;
    Scene scene;
    Share share;

    public SceneManager( Stage stage ) {
        if(SceneManager.instance != null) return;
        SceneManager.instance = this;

        this.stage = stage;
        this.share = new Share();
        this.stage.setUserData(share);
    }

    public static SceneManager getInstance() {
        return instance;
    }

    public Stage getStage() {
        return this.stage;
    }

    public void setStage(Stage stage) {
        this.stage = stage;
    }

    public void setTitle( String title ) {
        stage.setTitle(title);
    }

    public void moveScene( String location ) {
        try {
            Parent root = FXMLLoader.load(getClass().getResource(location));
            scene = new Scene(root);
            stage.setScene(scene);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

Created by SDM

작성자 정보

e-mail :: jm921106@naver.com || jm921106@gmail.com

github :: https://github.com/moonscoding

반응형

'Java > JavaFX 개념' 카테고리의 다른 글

Java FX // 개념 // Popup & Dialog  (0) 2018.07.27
Java FX // 개념 // Controller  (0) 2018.07.27
JavaFX // 개념 // TableView  (0) 2018.07.26