Java Basic GUI作成〜JavaFXを使用して画面を作る〜

イントロダクション

スタンドアロンでのJavaアプリケーションを作成します。
理由は、ウェブアプリケーションだとでかくなってしまい。Javaコードに集中できないからです。実際にJSPとかHTMLとか。。。作成することになるからです。
シンプルに、Javaのみで画面を作成し起動できるJavaFXでの実装を行います。今回の趣旨としては、JavaFXを使用して画面を作成するというところです・

実装したものはこんな感じです。

プログラムを作成する

コードはいたってシンプル ※作成物はこちら
下のようにjavafx.application.Applicationクラスを継承してlaunch()メソッドをオーバーライドするだけです。

public class CmdView extends Application {
    /** 画面の横サイズ */
    private static final int VIEW_WIDTH = 300;
    /** 画面のたてサイズ */
    private static final int VIEW_HEIGHT = 300;

    @Override
    public void start(Stage primary) {
        TextArea area = createTextArea();
        Group root = new Group();
        root.getChildren().add(area);
        Scene scene = new Scene(root, VIEW_WIDTH, VIEW_HEIGHT);
        primary.setScene(scene);
        primary.show();
    }

    /**
     * TextAreaを作成して返却する
     * @return TextArea
     */
    private TextArea createTextArea() {
        TextArea area = new TextArea();
        // 縦横の幅を設定する
        area.setPrefWidth(VIEW_WIDTH);
        area.setPrefHeight(VIEW_HEIGHT);
        area.setOnKeyPressed(createKeyPressEvent());

        return area;
    }

    private EventHandler<KeyEvent> createKeyPressEvent() {
        return new EventHandler<KeyEvent>() {
            public void handle(KeyEvent evt) {
                if (KeyCode.ENTER.equals(evt.getCode())) {
                    // Enter キーを謳歌した時の処理、テキストエリアを取得する
                    TextArea src = (TextArea) evt.getSource();
                    System.out.println("Press Enter: " + src.getText());
                }
                // チェック用のコンソール出力処理
                System.out.println("EventType: " + evt.getCode());
                System.out.println("Input: " + evt.getCharacter());
            }
        };
    }

    /** メインメソッド */
    public static void main(String[] args) {
        launch();
    }
}

Applicationクラスを拡張して作成します。

public class CmdView extends Application

メインメソッドは一番下で、親クラスのlaunchメソッドを呼び出すだけです。

/** メインメソッド */
public static void main(String[] args) {
    launch();
}

プログラムを起動したらメインメソッドが走ります。
その次に「launch()」が走るのですが、これは下のメソッド
start()を呼び出します。オーバーライドしてやるのでこのクラスのstartメソッドの処理が走ります。

ちなみに、フレームワークなどを作りたいときはこのような
「〜を継承して〜をオーバーライドすればOK」の形で作成します。
※手法の一つです。

@Override
public void start(Stage primary) {
    TextArea area = createTextArea();
    Group root = new Group();
    root.getChildren().add(area);
    Scene scene = new Scene(root, VIEW_WIDTH, VIEW_HEIGHT);
    primary.setScene(scene);
    primary.show();
}

TextAreaは下のprivateメソッドで作成しています。

/**
 * TextAreaを作成して返却する
 * @return TextArea
 */
private TextArea createTextArea() {
    TextArea area = new TextArea();
    // 縦横の幅を設定する
    area.setPrefWidth(VIEW_WIDTH);
    area.setPrefHeight(VIEW_HEIGHT);
    area.setOnKeyPressed(createKeyPressEvent());

    return area;
}

「public」は、外から呼べるメソッド
「private」は、このクラス内でのみ使用できる
こんな感じです。

ここから、画面の入力(コマンド)に対して処理を実行するように
修正していこうと思います。

投稿者:

takunoji

音響、イベント会場設営業界からIT業界へ転身。現在はJava屋としてサラリーマンをやっている。自称ガテン系プログラマー(笑) Javaプログラミングを布教したい、ラスパイとJavaの相性が良いことに気が付く。 Spring framework, Struts, Seaser, Hibernate, Playframework, JavaEE6, JavaEE7などの現場経験あり。 SQL, VBA, PL/SQL, コマンドプロント, Shellなどもやります。

コメントを残す