イントロダクション
前回は、画面切り替え用のボタンを作成しました。
実行結果はこんな感じ。。。
現状(2019/01/27)としては、ボタンを押下しても何も動きません。なのでこの動き「イベント処理」を実装するというのが今回の趣旨です。
イベントの実装方法
イベント処理の実装方法としては、細かい話をすると結構な量になるので「やり方」から入ろうと思います。今後、その細かいところも記載いたします。
[参考サイト]
イベント(アクション)実装
ズバリこんな風に作りました。説明が足りませんで。。。
- 画面上に、ボタンを作成します。これが「viewChangeBtn」変数にセットされています。
- このボタンに「キーが推されたときの処理をセットする」メソッド「setOnKeyPressed」をしようしてその処理を書きます。
- 「XXXされたとき」のような処理のことを「イベント処理」といい、EventHandlerインターフェースを実装します。
- EventHandlerインターフェースは、処理の内容が実装されていないのでそれを実装する必要があります。この時に実装しなくてはいけないのがインターフェースに定義されているメソッドです。
- インタフェースは処理内容が定義されていませんが。implements(実装)するときに定義されているメソッドをオーバーライドしてやる必要があります。「@Override」がついているメソッドがオーバーライドしているメソッドになります。
- そして、作成したボタンをPrimaryステージクラスに追加してやれば表示できます。
Button viewChangeBtn = new Button("画面切り替え"); viewChangeBtn.setOnKeyPressed(new EventHandler() { @Override public void handle(KeyEvent event) { // テスト用のコード System.out.println(event.getText()); } });
そして実行
ボタンを押下すると「ボタンの文字」がコンソールに出力されるはずなのですが、なにもでない。。。
ちょっと画面をいじってみると「ボタンを選択してからPCのキーボードを叩くと」コンソールに文字が出力されました。
KeyEventではなく、ActionEventの方を使うのが正しい実装でした。
<ソースの修正>
Button viewChangeBtn = new Button("画面切り替え"); viewChangeBtn.setOnAction(event -> { System.out.println(event.getEventType()); });
KeyEventと ActionEventで少し実装方法が違います。そして動かしてみる!
こんな感じでコンソールに出力されました。これでボタンに対するイベント(アクション)処理は実装できました。次回は、ボタン押下時に画面を切り替える方向に実装部分を修正します。