NodesをJavaFXの画面にレンダリングする方法と、JavaFxでカスタムコントロールを作成するときに、このプロセスをトリガする要素を理解しようとしています。私はAndroidのViewクラスを使っていて、JavaFXでシーングラフを描くのとは違って、Viewの描画が違う経験があります。JavaFxでシーングラフのレンダリングを実行またはトリガーする方法
例えば、AndroidではカスタムView
を作成し、onDraw(Canvas canvas)
メソッドを上書きすることができます。 onDraw()
では、ディレクトリをCanvas
オブジェクトに描画することで、すべての描画要件を満たすことができます。メソッドがUIスレッドで呼び出され、onDraw
が完了すると、キャンバスが自動的に表示されます。 GUIスレッドの場合は、ビューのinvalidate()
メソッドを呼び出すか、そうでない場合はpostInvalidate()
を呼び出すことによって、いつでもビューの再描画をトリガーできます。
JavaFxでは、私はCanvasオブジェクトではなくNodeオブジェクトを使用していますが、私が知っている限りonDraw()
に相当するものはありません。したがって、カスタムコントロールを作成している場合、Controlクラスを拡張し、SkinBaseを拡張するクラスを作成します。 SkinBase
クラスは、さまざまなNodeオブジェクトを作成することによってカスタムコントロールの「ルック」を作成する場所です。しかし、次に:
- 実際にノードオブジェクトをレンダリングするにはどうすればよいですか?
- ノードの1つのプロパティを変更する必要がある場合はどうすればよいですか?その の色?
- スキンを無効にして、 をGUIまたは別のスレッドから再レンダリングする方法はありますか?
私はAndroidのViewクラスがどのように動作しているかを知りたいと思いますが、これはAndroidとJavaFxのレンダリングプロセスがどのように動作するのかを混乱させる危険があります。
[Oracleによるマニュアル](https://docs.oracle.com/javafx/2/architecture/jfxpub-architecture.htm)を参照してください。 – hotzst
ここにカスタムコントロールを作成するためのチュートリアルがあります:http://www.guigarage.com/2012/11/custom-ui-controls-with-javafx-part-1/ – jns