2017年9月3日日曜日

JavaFXで画面遷移してみた件

JavaFXで画面遷移できるように実装してみました。Webアプリケーションでも画面遷移は勉強し始めの頃は大変困りました。そして今でも困ってます。

今回のアプリの仕様は3画面ほど作りまして、[前へ]ボタンと[次へ]ボタンで双方向に遷移できます。シンプルすぎて役に立たないアプリが完成しました。



     ↑        ↓



     ↑        ↓




さて、プログラムの構成はこんな感じです。
JDKは古いバージョンだとJavaFXは使えないので注意です。




今回はFXMLを使っていまして、ビューとコントローラは1対1になるようにしてます。

【Mainクラス】

public class Main extends Application {

    private static Stage stage;

    @Override
    public void start(Stage stage) throws Exception {
        Main.stage = stage;
        changeView("View0101.fxml");
        Main.stage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }

    public void changeView(String fxml) {
        try {
            stage.setScene(new Scene(FXMLLoader.load(getClass().getResource(fxml))));
        } catch (IOException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}

画面遷移するにはStageに紐づいているFXMLファイルを切り替えてあげればいいだけでした。コントローラから画面遷移できるようにしたいので、ChangeViewメソッドを作成し、引数には遷移対象のFXMLのファイル名としました。




【Controller0101〜Controller0103クラス】の抜粋
    
    @FXML
    private void nextButtonAction(ActionEvent event) {
        new Main().changeView("View0102.fxml");
    }

ChangeViewの呼び出しはこんな感じになりました。

改善の余地がありそうですが、一旦完成です。

0 件のコメント:

コメントを投稿