JavaFX 1.3 のネタ流出?

そんなドキドキするタイトルの Jim おじさんのポスト。
James Weaver on Quantum Computing and Java: JavaFX 1.3 Leakage at Devoxx 2009

Devoxx 2009 の Richard Bair 氏と Jasper Potts 氏の講演で JavaFX 1.3 でリリース予定の一部機能の話しがあった様です。
TreeView, PasswordBox, Menu, ToolBar, Multiline TextBox, Popup, Tooltip などのコントロールが追加されるらしいです。
それから 1.3 からは新しい概念の Cell と Regions という仕組みが導入されるようです。
Cell は ListView や TreeView などに使われる様です。Cell をいじることで View をカスタマイズできるといった感じだろうか。
Regions もカスタムコントロールを作りやすくするものらしいけど、どう使うんだろう。具体的なイメージが湧かないです。
尚 Regions は 1.3 ではAPI内部で使われて、それ以降のバージョンで開発者にも提供されるのではないかと書かれていますから 1.3 では一般開発者は使えなさそうです。ハックして使うことは出来るかもしれませんが...


こんな話が出るって事は JavaFX 1.3 のリリースが近いのかもしれないですね。

JFXtras 0.6 Preview 版が出ました

JFXtras 0.6 Preview 版が利用可能になったようです。
http://steveonjava.com/2009/11/25/jfxtras-0-6-preview-available/


Steve のお知らせによると、結構なボリュームの追加と変更があったようです。

その一つとして JFXtras のクラスの多くはクラス名の先頭に 'X' が付けられました。例えば XGrid や XBorder とか。
※ JFXStage や JFXDialog とかは頭の 'JF' が取り去られて XStage, XDialog のようになっています。
理由は、本家 JavaFX のクラスと JFXtras との間の名前の衝突を防ぐ為とのことです。
0.5 から 0.6 へ移行する際には「コンパイルが通らなくなっちゃった!」てなことになるので、頭の 'X' を付けてあげてください。


その他どんな機能が追加され、どの辺が変わったのかこれからちょっとづつ見てみようと思います。
止まってる入門記事も 0.6 にアップグレードして、もうちょっとしたら再開しようと思います。


正式リリースは一週間位後らしいです。

  • JFXtras 0.6 Preview 版ダウンロード

    http://code.google.com/p/jfxtras/downloads/list

  • API ドキュメント

    http://jfxtras.googlecode.com/svn/site/javadoc/release-0.6/index.html

ついに『Java並行処理プログラミング』が読めます!

なんと復刊決定!
そして早速注文!


http://www.fukkan.com/fk/VoteDetail?no=46255


最終的には238人という大勢の人がリクエストしたみたいです。
こんなに早く復刊して買えるなんてすばらしい!

@IT に WidgetFX の記事の後編が公開されました

Java Storeや携帯でも使われる? WidgetFXとは (1/2) - @IT (前編)
JavaFX+NetBeansでWidgetFXアプリを作るには (1/3) - @IT (後編)

後編ではウィジェットの作り方をご紹介してます。是非試しにオリジナルのウィジェットを作ってみてください。


追記
前編のリンクが間違っていたのを直しました

JFXtras Core 入門 - Shape (最終回)

前回までに JFXtras のシェイプについて5回書いてきましたが、今回は締めということで(特に締めに相応しい話ではありませんが)まとめと言うか、気付いたことを書いてみます。

JFXtras Core 入門 - Shape (1) - Foo am I? の中で矢印の図形を描きました。
矢印を描きたいとき、JFXtras ならば Arrow というクラスがあるので、それを使うことで簡単に矢印を描くことが出来るという話でした。


Arrow で矢印を描画


で、何に気付いたのかと。
この矢印は右を向いています。「右に行くと何かありますよ」なんて知らせたい場合に使えます。
では今度は左に向かせたいです。プログラムを直そうと思い API ドキュメントを探してみましたが JFXtras の Arrow には direction: Direction のようなプロパティは存在しません。
一体どうすれば良いのでしょうか。弱りました。使えないジャーン!と一瞬思ったりもしました。


ノンノン!そんな心配は要りません。


そもそも JavaFX の Node クラスがとても便利な Tlanslate, Scale, Rotate といった三種の神器を持っているのです。そして全てのシェイプは Node を継承しているので Arrow クラス自体には方向を指定するプロパティなんて必要ないのです。
三種の神器のうち Rotate がノードを回転させるので、これを使って向きを変えることが出来ます。


Node の rotate を使って向きを変えます。

import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import org.jfxtras.scene.shape.Arrow;

Stage {
    title: "JFXtras Shape Arrow"
    width: 150
    height: 150
    scene: Scene {
        content: [
            Arrow {
                x: 10, y: 20
                width: 100
                height: 60
                rise: 0.5
                depth: 0.5
                fill: Color.GREEN
                rotate: 90
            }
        ]
    }
}


はい、このとおり!


rotate: 180


rotate: 270


他のシェイプも同様です。

import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import org.jfxtras.scene.shape.RoundPin;

Stage {
    title: "JFXtras Shape RoundPin"
    width: 150
    height: 150
    scene: Scene {
        content: [
            RoundPin {
                centerX: 60
                centerY: 40
                radius: 30
                height: 70
                fill: Color.STEELBLUE
                rotate: 180
            }
        ]
    }
}


JavaFX ではこのように回転させたり、残る二つの神器を使って移動させたりサイズを拡大縮小させたりなんて余裕で出来ちゃう訳なんですね。便利だなあ。


とまあ、全然まとめ的な話ではありませんでしたが、以上で JFXtras Core 入門 - Shape は終わりです。
次回からは Border をやる予定です。(が、気が変わるかもしれません)


最後におまけ

import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import org.jfxtras.scene.shape.Star2;
import javafx.animation.Timeline;

import javafx.animation.KeyFrame;

def star: Star2 = Star2 {
    centerX: 60
    centerY: 60
    outerRadius: 20
    innerRadius: 10
    count: 5
    fill: Color.YELLOW
}

Timeline {
    repeatCount: Timeline.INDEFINITE
    keyFrames: [
        KeyFrame {
            time: 0.1s
            action: function() {
                star.rotate+=1;
            }
        }
    ]
}.play();

Stage {
    title: "JFXtras Shape Star2"
    width: 150
    height: 150
    scene: Scene {
        content: [
            star
        ]
        fill: Color.DARKBLUE
    }
}



おまけのアプレット

JFXtras Core 入門 - Shape (5)

シェイプの5回目です。

今回は残りの

  • ResizableRectangle
  • ReuleauxTriangle
  • RoundPin
  • RTriangle
  • Star2

です。


org.jfxtras.scene.shape.ResizableRectangle

import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import org.jfxtras.scene.shape.ResizableRectangle;

Stage {
    title: "JFXtras Shape ResizableRectangle"
    width: 250
    height: 250
    scene: Scene {
        content: [
            ResizableRectangle {
                fill: Color.PALEVIOLETRED
                strokeWidth: 20
                stroke: Color.BLACK
            }
        ]
    }
}

特に設定の必要なプロパティはありません。デフォルトでは縦横サイズは 200, 200 になります。width, height を好みの大きさに設定することもできます。
その他のプロパティは javafx.scene.shape.Rectangle と同じの為、割愛します。
ResizableRectangle と通常の Rectangle との違いは、長方形を囲む線が長方形の width と height で指定した領域を超えて描かれるかどうかです。
ResizableRectangle の四辺は ResizableRectangle の width と height の領域の内側に描かれ、このサイズより大きくなることはありません。
一方 Rectangle の四辺は太くすると width と height の領域の内側・外側両方に描かれる為、異なる性質を持ちます。比較するとわかると思います。以下は通常の Rectangle の例です。

import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;

Stage {
    title: "JavaFX Shape Rectangle"
    width: 250
    height: 250
    scene: Scene {
        content: [
            Rectangle {
                width: 200
                height: 200
                fill: Color.GREEN
                strokeWidth: 20
                stroke: Color.BLACK
            }
        ]
    }
}

http://jfxtras.googlecode.com/svn/site/javadoc/release-0.5/org.jfxtras.scene.shape/org.jfxtras.scene.shape.ResizableRectangle.html


org.jfxtras.scene.shape.ReuleauxTriangle

import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import org.jfxtras.scene.shape.ReuleauxTriangle;

Stage {
    title: "JFXtras Shape ReuleauxTriangle"
    width: 150
    height: 150
    scene: Scene {
        content: [
            ReuleauxTriangle {
                centerX: 60
                centerY: 60
                radius: 50
                fill: Color.TOMATO
            }
        ]
    }
}

難しいプロパティはありませんので割愛します。

http://jfxtras.googlecode.com/svn/site/javadoc/release-0.5/org.jfxtras.scene.shape/org.jfxtras.scene.shape.ReuleauxTriangle.html


org.jfxtras.scene.shape.RoundPin

import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import org.jfxtras.scene.shape.RoundPin;

Stage {
    title: "JFXtras Shape RoundPin"
    width: 150
    height: 150
    scene: Scene {
        content: [
            RoundPin {
                centerX: 60
                centerY: 40
                radius: 30
                height: 70
                fill: Color.STEELBLUE
            }
        ]
    }
}


プロパティ 説明
centerX 半円部分の中心の X 座標
centerY 半円部分の中心の Y 座標
radius 半円部分の中心からの半径
height 半円を除いた錐状の部分の高さ

http://jfxtras.googlecode.com/svn/site/javadoc/release-0.5/org.jfxtras.scene.shape/org.jfxtras.scene.shape.RoundPin.html


org.jfxtras.scene.shape.RTriangle

import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import org.jfxtras.scene.shape.RTriangle;

Stage {
    title: "JFXtras Shape RTriangle"
    width: 150
    height: 150
    scene: Scene {
        content: [
            RTriangle {
                x: 30
                y: 100
                width: 70
                height: 90
                anglePosition: RTriangle.ANGLE_AT_END
                fill: Color.INDIANRED
            }
        ]
    }
}


プロパティ 説明
anglePosition 90度の角の場所。定数 ANGLE_AT_START, ANGLE_AT_END, NONE で指定。デフォルトは ANGLE_AT_START

直角三角形です。anglePosition に ANGLE_AT_START を指定(又は省略)すると90度の角が左下に, ANGLE_AT_END を指定すると右下に来ます。NONE を指定すると二等辺三角形になります。

anglePosition: RTriangle.ANGLE_AT_START

http://jfxtras.googlecode.com/svn/site/javadoc/release-0.5/org.jfxtras.scene.shape/org.jfxtras.scene.shape.RTriangle.html


org.jfxtras.scene.shape.Star2

import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import org.jfxtras.scene.shape.Star2;

Stage {
    title: "JFXtras Shape Star2"
    width: 150
    height: 150
    scene: Scene {
        content: [
            Star2 {
                centerX: 50
                centerY: 50
                outerRadius: 40
                innerRadius: 20
                count: 6
                fill: Color.INDIGO
            }
        ]
    }
}


プロパティ 説明
count 星の尖りの数
innerRadius 図形の中心から星の尖りの始まりまでの半径
outerRadius 図形の中心から星の尖りの先端までの半径

count: 5

http://jfxtras.googlecode.com/svn/site/javadoc/release-0.5/org.jfxtras.scene.shape/org.jfxtras.scene.shape.Star2.html


以上で JFXtras Core 0.5 のシェイプを全て試してみました。
次回は最後にシェイプについて気付いたことを、まとめと言う程ではありませんが、書いてみたいと思います。