JavFXアプリケーションの基本コード (4/6)
作成:2014-11-15 10:11
更新:2014-11-15 10:11
更新:2014-11-15 10:11
■Scene、Pane、そしてコンポーネント
では、このウインドウに簡単なコンポーネントを追加してみましょう。もっともシンプルなものとして、テキストを表示するだけのコンポーネントを追加してみることにします。
下に掲載したリストがそのサンプルです。これを実行すると、ウインドウの中央に「This is JavaFX!」というテキストが表示されます。
テキストの表示は、AWT/Swingと同様に「Label」というクラスとして用意されています。これはSWT/Swingのものとは違います。javafx.scene.controlパッケージに用意されている、JavaFX専用のものです。
これでテキストは表示できますが、しかし単純にStageにLabelを追加すればいいかというと、そうはいきません。Stageには、「Scene」と「Pane」というものを用意しないといけないのです。
●Sceneとは?
「Scene」というのは、Stageに組み込まれる見えないコンテナです。Stageはウインドウですが、このウインドウの中に表示される内容を構築するのがSceneです。このSceneに組み込まれたものをStageにはめ込んで表示するのですね。このSceneは、以下のような形でインスタンスを作成します。
では、Paneというのは? これが、コンポーネント類を組み込む土台となるコンテナです。Sceneには、Paneを1つだけ組み込めるようになっているのです。
Paneは、1つだけしかないわけではなく、いくつかの種類があります。それは、Pane内にどのようにコンポーネントを組み込むか? そのレイアウト方式の違いによります。というと、「ははぁ、あれだな」と想像がつくでしょう。そう、AWT/Swingの「レイアウトマネージャ」みたいなものなのです。ただし、レイアウトの管理だけをするレイアウトマネージャと異なり、Paneは「コンテナにレイアウトマネージャ機能が組み込まれたようなもの」と想像するとよいでしょう。
整理すると、コンポーネントを利用するウインドウの構成は以下のようになります。
・Stageの中にSceneが組み込まれている。
・Sceneの中にPaneが組み込まれている。
・Paneの中にコンポーネントが組み込まれている。
これで、ようやくコンポーネント類が使えるようになるわけです。ちょっと構造は違いますが、Swingなどもコンテナを組み合わせて画面を作りましたから、それほど違和感はないでしょう。
下に掲載したリストがそのサンプルです。これを実行すると、ウインドウの中央に「This is JavaFX!」というテキストが表示されます。
テキストの表示は、AWT/Swingと同様に「Label」というクラスとして用意されています。これはSWT/Swingのものとは違います。javafx.scene.controlパッケージに用意されている、JavaFX専用のものです。
これでテキストは表示できますが、しかし単純にStageにLabelを追加すればいいかというと、そうはいきません。Stageには、「Scene」と「Pane」というものを用意しないといけないのです。
●Sceneとは?
「Scene」というのは、Stageに組み込まれる見えないコンテナです。Stageはウインドウですが、このウインドウの中に表示される内容を構築するのがSceneです。このSceneに組み込まれたものをStageにはめ込んで表示するのですね。このSceneは、以下のような形でインスタンスを作成します。
new Scene( 《Pane》, 横幅 , 高さ );横幅と高さはわかりますね。作成するコンテナの大きさです。これをStageにはめ込むことで、そのサイズにウインドウが調整されます。
では、Paneというのは? これが、コンポーネント類を組み込む土台となるコンテナです。Sceneには、Paneを1つだけ組み込めるようになっているのです。
Paneは、1つだけしかないわけではなく、いくつかの種類があります。それは、Pane内にどのようにコンポーネントを組み込むか? そのレイアウト方式の違いによります。というと、「ははぁ、あれだな」と想像がつくでしょう。そう、AWT/Swingの「レイアウトマネージャ」みたいなものなのです。ただし、レイアウトの管理だけをするレイアウトマネージャと異なり、Paneは「コンテナにレイアウトマネージャ機能が組み込まれたようなもの」と想像するとよいでしょう。
整理すると、コンポーネントを利用するウインドウの構成は以下のようになります。
・Stageの中にSceneが組み込まれている。
・Sceneの中にPaneが組み込まれている。
・Paneの中にコンポーネントが組み込まれている。
これで、ようやくコンポーネント類が使えるようになるわけです。ちょっと構造は違いますが、Swingなどもコンテナを組み合わせて画面を作りましたから、それほど違和感はないでしょう。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
package com.tuyano.libro; import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.Label; import javafx.scene.layout.BorderPane; import javafx.stage.Stage; public class App extends Application { public static void main(String[] args) { launch(args); } @Override public void start(Stage stage) throws Exception { Label label = new Label("This is JavaFX!"); BorderPane pane = new BorderPane(); pane.setCenter(label); Scene scene = new Scene(pane, 320, 240); stage.setScene(scene); stage.show(); } }
※関連コンテンツ