1

Netbeans と Scenebuilder を使用して JavaFX プロジェクトを作成しています。Scenebuilder には日付ピッカー コンポーネントがないことに気付いたので、jfxtras をダウンロードし、ライブラリをクラスパスに追加しました。次のコードを使用して、CalendarTextField オブジェクトを FXML ファイルに追加しました。

 <?import jfxtras.labs.scene.control.*?> 

 <CalendarTextField fx:id="setupdate" prefWidth="200.0" showTime="true"  GridPane.columnIndex="3" GridPane.rowIndex="8" />

正常に動作しているように見えましたが、Scenebuilder で FXML ファイルを開くと、次のエラーが表示されます。

    fxml:99: error: 
    javafx.fxml.LoadException: Element does not define a default property.

これが何を意味するのかわかりません。

4

1 に答える 1

1

Java 8 日付ピッカー

Java 8 + SceneBuilder 2を使用します。DatePicker があります。

どちらもアーリー アクセスです (特に SceneBuilder 2)。しばらくの間、SceneBuilder 2 の安定性についてあまり期待しないでください。現在の実装はかなりラフで、SceneBuilder 1.1 ほど洗練されていません。


jfxtras と fxml

SceneBuilder 1.1 での jfxtras コントロールの使用に関しては、サポートされていないだけだと思います。

Java 7 用の jfxtras コントロールを構築するために、jfxtras 開発者はプライベート API を利用する必要がありました。カスタム コントロールを構築するための完全なパブリック API は Java 8 では利用できないためです。特定の JavaFX バージョンでのみ動作するようにコントロール バイナリを結び付けるための SceneBuilder バージョン (プライベート JavaFX API の下位互換性は、新しい Java バージョンでは保証されていないため)。

また、jfxtras の開発者は、コントロールを FXML で動作させるために必要なビルダー クラスを実装していない可能性があります。適切なビルダーの欠如がエラーを生成するものであるため、これは事実のようです: javafx.fxml.LoadException: Element does not define a default property.


独自のビルダーを実装する

ビルダーと fxml の詳細については、Introduction to FXML を参照してください。必要に応じて、jfxtras のビルダーを実装できCalendarTextFieldます (ただし、この回答では書きません)。適切なビルダーを実装した場合は、SceneBuilder 1.1 で使用される FXML でコントロールを使用できる可能性が十分にあります。

于 2013-11-20T06:03:39.617 に答える