• BPnet
  • ビジネス
  • IT
  • テクノロジー
  • 医療
  • 建設・不動産
  • TRENDY
  • WOMAN
  • ショッピング
  • 転職
  • ナショジオ
  • 日経電子版
  • PR

  • PR

  • PR

  • PR

  • PR

最新Java情報局

JavaFXのコントローラークラスとイベント処理を知る

櫻庭 祐一=Java in the Box 2016/12/09 ITpro

 JavaFXではFXMLを使用して、GUIの構成を行うことを前回紹介しました。しかし、もう1つのGUIの基本であるイベント駆動については紹介できませんでした。そこで、今回はJavaFXでのイベント処理について紹介します。そのために、まずJavaFXのアプリケーションの基本的な構成について説明します。

JavaFXアプリケーションの構成

 前回作成したJavaFXのサンプルはメインクラスとFXMLで構成していました。しかし、イベント処理を行っていないため、全く動きはありません。イベント処理を行うには、FXMLに記述している描画要素にアクセスし、表示している情報を取得、または更新できなくてはなりません。

 このために、JavaFXではFXMLに対応したコントローラークラスを使用します。FXMLとコントローラークラスを結びつけることで、コントローラークラスから描画要素へアクセスできるようになります。また、描画要素からコントローラークラスのイベントハンドラをコールすることも可能になります。

 そして、通常は表示を行う情報を保持するモデルが使われることが多いです。これを図示したのが、図1です。

図1●JavaFXアプリケーションの構成

 メインクラスがFXMLをロードします。FXMLのロード時に、コントローラークラスも一緒にロードされ、インスタンスが生成されます。モデルについては特に制約はないので、メインクラスから生成したり、DIでインジェクションして生成します。図1では1つのFXMLとコントローラークラスから構成されていますが、必要に応じて複数のFXMLとコントローラークラスを使用します。

FXMLとコントローラークラスの対応付け

 FXMLとコントローラークラスの対応付けは、FXMLで指定します。前回、FXMLのルート要素にxmlnsで名前空間を宣言することを説明しました。この名前空間で指定するスキーマに、コントローラークラスを指定するための属性が定義されています。

 例えば、ルート要素がVBoxクラスというコンテナだとしましょう。この場合、コントローラークラスはリスト1のように指定します。

リスト1●FXMLでのコントローラクラスの指定

<VBox xmlns:fx="http://javafx.com/fxml/1" 
      fx:controller="コントローラクラス" >
 
    省略
    
</VBox>

 名前空間の指定が青字、コントローラークラスの指定が赤字部分です。リスト1に示したようにfx:controller属性でコントローラークラスを指定します。このように指定することで、FXMLのロード時にコントローラークラスもロードされ、インスタンス化されます。

描画要素との対応付け

 コントローラークラスでは描画要素に対しアクセスして情報を取得、更新を行います。その発端になるのがイベント処理です。描画要素との対応付けは、サンプルを作りながら説明しましょう。

 今回作成するのは、キーを入力すると、それに応じた値を出力するサンプルです。キーを入力するのはテキストフィールドです。入力した後に[Search]ボタンをクリックすると、キーに応じた値をラベルに表示します。GUIの表示を図2に示しました。

図2●サンプルのGUI

 このサンプルのGUIの構成を図3に示します。

図3●GUIの構成

 個々の要素について簡単に触れておきます。

ここから先はITpro会員(無料)の登録が必要です。

次ページ 図3の青い四角で表したクラスはコンテナで、オレン...
  • 1
  • 2
  • 3
  • 4
  • 5

あなたにお薦め

連載新着

連載目次を見る

今のおすすめ記事

ITpro SPECIALPR

What’s New!

経営

アプリケーション/DB/ミドルウエア

クラウド

運用管理

設計/開発

サーバー/ストレージ

ネットワーク/通信サービス

セキュリティ

もっと見る