見出し画像

GUIの「コントロール」と「イベント」 職業訓練38日目

コントロールとは?

コントロールを簡単に言うとGUIアプリケーションの画面で操作をする上で必要になる部品のことです。JavaFXでは用途に合わせた様々なコントロールが用意されています。

代表的なコントロール

・Label

短いテキストを表示するために使用します。表示する文字列はLabelクラスのインスタンスを生成する際にコンストラクタで指定します。コンストラクタで指定せず、後から「setText」を利用して設定できます。構文は以下のようになります。

----------------------------------------------------------------------------

Label lbl1=new Label("Hello");

Label lbl2=newLabel();

lbl.setText("Goodbye");

Hello Goodbyeという文字が表示されます

----------------------------------------------------------------------------

・TextField

「TextField」はユーザーに対して1行入力を提供するクラスです。入力された文字あるいは数値を取り出すには「getText」を利用します。構文は以下のようになります。

----------------------------------------------------------------------------

Label lbl=newLabel();

TextField text=new TextField();→この時点でコントロールは完成

String str=text.getText();

lbl.setText(str);

この処理で入力フォームに入力された文字をラベルで表示できます。

----------------------------------------------------------------------------

・PasswordField

これは基本的な機能は「TextField」と変わりません。唯一の違いは入力された文字列が●で見えなくなることです。ログイン画面のパスワード入力で使われます。構文は以下のようになります。

---------------------------------------------------------------------------

PasswordField pass=new PasswordField();

これだけです。

----------------------------------------------------------------------------

・Button

Button(ボタン)はユーザーがクリックすると、それに対して何らかのプログラム処理を行います。構文は以下のようになります。

----------------------------------------------------------------------------

Button btn=new Button();

これだけです。

----------------------------------------------------------------------------

レイアウト

このようにコントロールを作ったら、次はそのコントロールをどこに配置するかという操作が必要になります。このレイアウトの処理をするの怠ると、プログラム上にはコントロールは存在するものの、画面上にコントロールが出てこないという状態になります。レイアウトをするためのコントロール配置用メソッドは以下のようになります。

・setTop→画面上部に配置

・setBottom→画面下部に配置

・setLeft→画面左側に配置

・setRight→画面右側に配置

・setCenter→画面中央に配置

set+配置位置という形になります。

イベントとは?

GUIアプリケーションは起動すると最初にウィンドウが表示されその中に様々なコントロールがあります。そのコントロールを操作することをイベントと言います。例をあげるならボタンをクリックする。入力フォームに文字を入力するなどです。

このイベントが起こることでプログラムの処理を開始します。そのためにはあらかじめプログラムの処理を登録しておいたイベントハンドラメソッドが必要になります。イベントハンドラメソッドを使うには3つの方法があります。

⑴イベントリスナークラスの作成

イベントリスナーとはイベントを受け取るためのインターフェースを実装したイベントリスナークラスのインスタンスのことです。このインターフェースは抽象メソッドを持っているのでメソッドをオーバーライドすることになります。このようなメソッドをイベントハンドラと言います。

メインクラスでは

コントロール変数+setOnAction(new クラス名());です。

⑵匿名クラスによるイベントハンドリング

この場合はクラスを作成する必要はなく

コントロール変数+setOnAction(new インターフェース名());

クラス名ではなくそのままインターフェースを実装してしまうやり方です。イベントハンドラもメインクラスにそのまま書いちゃいます。

⑶ラムダ式によるイベントハンドリング

このやり方はインターフェースの実装すらしません。

コントロール変数+setOnAction(event->{処理文});

となります。だいぶスッキリしてますね。これはおまじないとして覚えてください。今の私ではちゃんと説明することができません。


それでは今日はこの辺で失礼します。ありがとうございました。

この記事が気に入ったらサポートをしてみませんか?