我试图理解如何在JavaFX中向屏幕呈现Nodes以及触发此过程是什么,因为我想在JavaFx中创建自定义控件。我有使用Android View类的经验,其中View的绘制与在JavaFX中绘制场景图不同。
例如在Android中,我可以创建自定义View
并覆盖onDraw(Canvas canvas)
方法。在onDraw()
中,我可以通过将目录绘制到Canvas
对象上来放置所有绘图要求。在UI线程上调用该方法,一旦onDraw
完成,就会自动显示画布。如果在GUI线程上调用View的invalidate()
方法,或者postInvalidate()
,则可以随时触发View的重新绘制。
在JavaFx中,我不使用Canvas对象,而是使用Node对象,据我所知,没有等效的onDraw()
。因此,如果我创建自定义控件,我会扩展Control类,并创建一个扩展SkinBase的类。 SkinBase
类是通过创建适合的各种Node对象来创建自定义控件的“外观”的地方。但那时:
很明显,我试图与Android的View类如何工作相提并论,这有可能混淆Android和JavaFx渲染过程的工作原理,但Android是我的知识起点。
答案 0 :(得分:1)
Platform.runLater(...)
来安排代码在后台线程中在FX应用程序线程上执行(或使用JavaFX concurrency API)。