イントロダクション
スタンドアロンでの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」は、このクラス内でのみ使用できる
こんな感じです。
ここから、画面の入力(コマンド)に対して処理を実行するように
修正していこうと思います。