Hatena::ブログ(Diary)

Foo am I? このページをアンテナに追加 RSSフィード

2009-12-04

JavaFX 第 2 回勉強会

日本 JavaFX ユーザグループの第 2 回勉強会が開催されます。

楽しみです。

404 Not Found

JavaFX 1.3 のネタ流出?

そんなドキドキするタイトルの Jim おじさんのポスト。

James Weaver on 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 のリリースが近いのかもしれないですね。

2009-11-26

JFXtras 0.6 Preview 版が出ました

JFXtras 0.6 Preview 版が利用可能になったようです。

Steve On Java » JFXtras 0.6 Preview Available!


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

その一つとして JFXtras のクラスの多くはクラス名の先頭に 'X' が付けられました。例えば XGrid や XBorder とか。

※ JFXStage や JFXDialog とかは頭の 'JF' が取り去られて XStage, XDialog のようになっています。

理由は、本家 JavaFX のクラスと JFXtras との間の名前の衝突を防ぐ為とのことです。

0.5 から 0.6 へ移行する際には「コンパイルが通らなくなっちゃった!」てなことになるので、頭の 'X' を付けてあげてください。


その他どんな機能が追加され、どの辺が変わったのかこれからちょっとづつ見てみようと思います。

止まってる入門記事も 0.6 にアップグレードして、もうちょっとしたら再開しようと思います。


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


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

  • API ドキュメント

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

2009-11-25

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

なんと復刊決定!

そして早速注文!


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


最終的には238人という大勢の人がリクエストしたみたいです。

こんなに早く復刊して買えるなんてすばらしい!

2009-11-19

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

Java Storeや携帯でも使われる? WidgetFXとは (1/2) - @IT (前編)

JavaFX+NetBeansでWidgetFXアプリを作るには (1/3) - @IT (後編)

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


追記

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

2009-11-07

JFXtras Core 入門 - Shape (最終回)

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

JFXtras Core 入門 - Shape (1) - Foo am I? の中で矢印の図形を描きました。

矢印を描きたいとき、JFXtras ならば Arrow というクラスがあるので、それを使うことで簡単に矢印を描くことが出来るという話でした。


Arrow で矢印を描画

f:id:hide1080:20091022000718j:image


で、何に気付いたのかと。

この矢印は右を向いています。「右に行くと何かありますよ」なんて知らせたい場合に使えます。

では今度は左に向かせたいです。プログラムを直そうと思い 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
            }
        ]
    }
}

f:id:hide1080:20091107230659j:image

はい、このとおり!


rotate: 180

f:id:hide1080:20091107230700j:image


rotate: 270

f:id:hide1080:20091107230701j:image


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

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
            }
        ]
    }
}

f:id:hide1080:20091107230702j:image


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
    }
}

f:id:hide1080:20091107230703j:image

おまけのアプレット

2009-11-03

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
            }
        ]
    }
}

f:id:hide1080:20091103221145j:image

特に設定の必要なプロパティはありません。デフォルトでは縦横サイズは 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
            }
        ]
    }
}

f:id:hide1080:20091103224338j:image

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
            }
        ]
    }
}

f:id:hide1080:20091104215548j:image

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

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
            }
        ]
    }
}

f:id:hide1080:20091104215950j:image

プロパティ説明
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
            }
        ]
    }
}

f:id:hide1080:20091104221224j:image

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

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

anglePosition: RTriangle.ANGLE_AT_START

f:id:hide1080:20091104221225j:image

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
            }
        ]
    }
}

f:id:hide1080:20091104223009j:image

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

count: 5

f:id:hide1080:20091104224717j:image

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


以上で JFXtras Core 0.5 のシェイプを全て試してみました。

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

2009-10-30

JFXtras Core 入門 - Shape (4)

シェイプの4回目です。

今回は

  • MultiRoundRectangle
  • Rays
  • RegularPolygon
  • ResizableEllipse

を描いてみようと思います。


org.jfxtras.scene.shape.MultiRoundRectangle

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

Stage {
    title: "JFXtras Shape MultiRoundRectangle"
    width: 150
    height: 150
    scene: Scene {
        content: [
            MultiRoundRectangle {
                x: 10
                y: 10
                width: 80
                height: 80
                topLeftWidth: 10
                topLeftHeight: 10
                bottomLeftWidth: 20
                bottomLeftHeight: 20
                topRightWidth: 30
                topRightHeight: 30
                bottomRightWidth: 0
                bottomRightHeight: 0
                fill: Color.BLUEVIOLET
            }
        ]
    }
}

f:id:hide1080:20091030222541j:image

プロパティ説明
topLeftWidth左上角の弧の横方向の半径
topLeftHeight左上角の弧の縦方向の半径
bottomLeftWidth左下角の弧の横方向の半径
bottomLeftHeight左下角の弧の縦方向の半径
topRightWidth右上角の弧の横方向の半径
topRightHeight右上角の弧の縦方向の半径
bottomRightWidth右下角の弧の横方向の半径
bottomRightHeight右下角の弧の縦方向の半径

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


org.jfxtras.scene.shape.Rays

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

Stage {
    title: "JFXtras Shape Rays"
    width: 150
    height: 150
    scene: Scene {
        content: [
            Rays {
                rounded: false
                extent: 0.7
                centerX: 60
                centerY: 60
                radius: 50
                rays: 5
                fill: Color.DARKGOLDENROD
            }
        ]
    }
}

f:id:hide1080:20091030222542j:image

プロパティ説明
extentRayの先端の拡がり。0.0 から 1.0 までの範囲で 1.0 が一番拡がりが大きい
raysRayの数
roundedRayの先端を丸めるかどうか。true にすると丸める

extent: 0.4, rays: 4

f:id:hide1080:20091030222543j:image

Asterisk にも似ていると思います。

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


org.jfxtras.scene.shape.RegularPolygon

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

Stage {
    title: "JFXtras Shape RegularPolygon"
    width: 150
    height: 150
    scene: Scene {
        content: [
            RegularPolygon {
                centerX: 50
                centerY: 50
                radius: 40
                sides: 6
                fill: Color.HOTPINK
            }
        ]
    }
}

f:id:hide1080:20091030223527j:image

プロパティ説明
sides辺の数

sides: 8

f:id:hide1080:20091030223528j:image

正○角形なわけですね。

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


org.jfxtras.scene.shape.ResizableEllipse

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

Stage {
    title: "JFXtras Shape ResizableEllipse"
    width: 150
    height: 150
    scene: Scene {
        content: [
            ResizableEllipse {
                fill: Color.PALEVIOLETRED
            }
        ]
    }
}

f:id:hide1080:20091030224924j:image

特に設定の必要なプロパティはありません。デフォルトではコンテナノードの縦横サイズから自分のサイズを決定します。縦横 200, 200 になります。width, height を好みの大きさに設定することもできます。(使いどころがよくわかりませんけど。。。)

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


今日はここまで。シェイプは次回が最終回です。


追記

ResizableEllipse のデフォルトのサイズについて修正しました。