conrolsfxとjavafx8u40のDialog APIの違い

javafx8u40以降で追加されたDialog APIはconrolsfxのそれを元にしています。


しかし、多少変更されているのでその違いを見ていきます。

  • builderを使うのではなく直接newする
  • Action APIがない
  • Dialogの実装が違う
  • Lightweight Dialogがない
  • DialogStyleがない

builderを使うのではなく直接newする

直接newします。SceneBuilder 2.0.1でFXMLにも対応します。

(まだソースしかありませんビルドしてください)

Action APIがない

javafxにAction APIがないので結果はすべてOptionalで受け取ります。 javafxではDialogがEventTargetになったのでDialogのイベントデリバリは普通に行われるようになったのでjavafx propertyで反応できます。

(当然Event#fireEvent出来ます)

Dialogの実装が違う

Mastheadの名称がHeaderに変わりました。

Exception、FontSelector、Login、ProgressDaialogとWizardがありません。 javafx8u40のDialog実装にはAlert, ChoiceDialog, TextInputDialogの3つがあります。

builderがないのでWithout MastheadにしたいならheaderTextに""かnullを自分でsetします。headerではありません。 ほかにもExceptionDaialogが欲しいならcontentTextにmessageを、expandableContentにTextAreaをそれぞれsetします。

また、button barはgetDialogPane().getButtonTypes()でObservableListを拾ってそこに追加します。 さらにbutton barのボタンのハンドリング/フィルタリングはDialogPane#lookupButton(ButtonType)で*Node*を拾って行います。

このようにして自分で好きにカスタマイズできます。

Lightweight Dialogがない

ありません。Dialogクラスが利用しているダイアログの実体であるFXDialogクラスがpackage-privateなので自分で作ることも出来ません。

DialogStyle

ありません。StageStyleを使ってください。

(ModalityとOwnerも持ちます)

JavaFXはじめました

LightweightDialogじゃなきゃc(`Д´と⌒c)つ彡 ヤダヤダ
HeavyweightDialogじゃc(`Д´と⌒c)つ彡 ヤダヤダ
secondary loop自分で回させてくれないとできないc(`Д´と⌒c)つ彡 ヤダヤダ
TextInputControlまわりの非公開API公開してくれないとテキストエディタ書けないc(`Д´と⌒c)つ彡 ヤダヤダ
DefaultTreeCell公開してくれないとTreeCellの派生書けないc(`Д´と⌒c)つ彡 ヤダヤダ