2009-12-04
JavaFX 1.3 のネタ流出?
そんなドキドキするタイトルの Jim おじさんのポスト。
Jim Weaver’s Rich-Client Java Blog: 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 にアップグレードして、もうちょっとしたら再開しようと思います。
正式リリースは一週間位後らしいです。
- 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
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 で矢印を描画
で、何に気付いたのかと。
この矢印は右を向いています。「右に行くと何かありますよ」なんて知らせたい場合に使えます。
では今度は左に向かせたいです。プログラムを直そうと思い 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
}
}
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
}
]
}
}
特に設定の必要なプロパティはありません。デフォルトでは縦横サイズは 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
}
]
}
}
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
}
]
}
}
難しいプロパティはありませんので割愛します。
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 | 半円を除いた錐状の部分の高さ |
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
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
以上で 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
}
]
}
}
| プロパティ | 説明 |
|---|---|
| topLeftWidth | 左上角の弧の横方向の半径 |
| topLeftHeight | 左上角の弧の縦方向の半径 |
| bottomLeftWidth | 左下角の弧の横方向の半径 |
| bottomLeftHeight | 左下角の弧の縦方向の半径 |
| topRightWidth | 右上角の弧の横方向の半径 |
| topRightHeight | 右上角の弧の縦方向の半径 |
| bottomRightWidth | 右下角の弧の横方向の半径 |
| bottomRightHeight | 右下角の弧の縦方向の半径 |
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
}
]
}
}
| プロパティ | 説明 |
|---|---|
| extent | Rayの先端の拡がり。0.0 から 1.0 までの範囲で 1.0 が一番拡がりが大きい |
| rays | Rayの数 |
| rounded | Rayの先端を丸めるかどうか。true にすると丸める |
extent: 0.4, rays: 4
Asterisk にも似ていると思います。
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
}
]
}
}
| プロパティ | 説明 |
|---|---|
| sides | 辺の数 |
sides: 8
正○角形なわけですね。
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
}
]
}
}
特に設定の必要なプロパティはありません。デフォルトではコンテナノードの縦横サイズから自分のサイズを決定します。縦横 200, 200 になります。width, height を好みの大きさに設定することもできます。(使いどころがよくわかりませんけど。。。)
今日はここまで。シェイプは次回が最終回です。
追記
ResizableEllipse のデフォルトのサイズについて修正しました。





















