CodeZine(コードジン)

特集ページ一覧

JavaFX 1.0 をいち早く体験してみる

JavaFX 1.0 Previewは0.7に比べてどこが変わったのか?

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2008/09/08 14:00

目次

closeActionとfunction

 ただし、完全に旧Frameと同じというわけではなく、いくつか機能拡張されたところもあります。例えば、「closeAction」アトリビュートなどもその一つです。これは、ウインドウを閉じるときの動作を示すアトリビュートで、これを利用することでクローズボックスをクリックしたときの処理を簡単に組み込むことができます。

package fxsample;

import java.lang.System;
import javafx.ext.swing.*;

SwingFrame {
    title: "Title"
    width: 200
    height: 200
    visible: true
    content: Label {
        text: "new JavaFX!"
    }
    closeAction: function(){
        System.exit(0);
    }
}

 これが、closeActionを組み込んだサンプルです。ここでは、クローズボックスをクリックすると、System.exitを呼び出しプログラムを終了しています。

 このcloseActionには、functionが値として設定されているのが分かりますね。0.7のスクリプトに慣れている人なら「なぜ、function? operationではないのか?」と思われたはずです。

 結論から言うと、1.0では「operationがない」のです! 処理を記述するためのものはfunctionに統一されており、0.7でoperationを使って記述していた処理はすべてfunctionに書き換えることになります。

 これはかなり大きな仕様の変更ですが、考えてみれば0.7の「operationとfunctionを使い分けて書く」という書き方は、分かりにくく、あまり意味がない感はありました。functionへの統一は、ソースコードをよりシンプルにするという点で理解できるものでしょう。

Canvasによるグラフィック表示

 1.0で大きく変わったのは、Swingコンポーネント関係よりも、グラフィック表示関係でしょう。0.7では、Canvasの中にグラフィックのシェイプ・クラスを用意して図形を表示させていました。では、0.7でのごく簡単な図形描画のサンプルをあげましょう。FrameにCanvasを配置し、そこにCircleを使って円を表示するサンプルです。

0.7形式の記述
import javafx.ui.*;
import javafx.ui.canvas.*;

Frame {
    title:"タイトル"
    width:200
    height:200
    visible:true
    content: Canvas {
        content: [
            Circle {
                cx: 100, cy: 80
                radius: 50
                fill: red
            }
        ]
    }
}

 これを、1.0のスクリプトとして書き直してみましょう。1.0でも、SwingFrameにCanvasを配置してグラフィックを描画することは可能です。では、今のサンプルを1.0で書き直してみましょう。

1.0形式の記述
package fxsample;

import javafx.ext.swing.*;
import javafx.scene.geometry.Circle;
import javafx.scene.paint.Color;

SwingFrame {
    title: "Title"
    width: 200
    height: 200
    visible: true
    
    content: Canvas {
        content: [
            Circle {
                centerX: 100, centerY: 80
                radius: 50
                fill: Color.RED
            }
        ]
    }
}
図9 赤い円を表示する。
図9 赤い円を表示する。

 ここでは、SwingFrameのcontentにCanvasを組み込み、その中のcontentにCircleを組み込んで円を表示しています。大体の流れは同じですが、よく見ると細かな点でいろいろと違いがあります。

 まず、パッケージの問題。1.0では、Circleなどの図形クラスはjavafx.scene.geometryパッケージに、また色を示すColorクラスはjavafx.scene.paintパッケージにそれぞれ用意されています。Circleというクラスそのものは変わっていませんが、中心位置のアトリビュートが「cx」「cy」から「centerX」「centerY」に変わっているなど、完全に同じというわけではありません。

 色の指定も、0.7では単に「red」とだけ指定すればよかったものが、「Color.RED」というようにColorクラスのアトリビュートに変わっています。このColorクラスは、0.7と比べるとかなり強化されており、新たに色を作成するためのfunctionも次のようにいろいろと用意されています。

Color.color([red], [green], [blue]);
Color.rgb([red], [green], [blue]);
Color.web([16進数のString]);

 非常に面白いのは、webでしょう。"#FF0000"というように、Webでの16進数によるテキストを使ってColorを生成することができます。またこれらのいずれも、最後に透過度の値を指定することもできます。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 掌田 津耶乃(ショウダ ツヤノ)

    三文ライター&三流プログラマ。主にビギナーに向けたプログラミング関連の執筆を中心に活動している。 ※現在、入門ドキュメントサイト「libro」、カード型学習サイト「CARD.tuyano.com」を公開中。またGoogle+プロフィールはこちら。

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5