Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaFX是否基于另一个类中的事件向TilePane添加形状?_Java_Multithreading_Javafx - Fatal编程技术网

JavaFX是否基于另一个类中的事件向TilePane添加形状?

JavaFX是否基于另一个类中的事件向TilePane添加形状?,java,multithreading,javafx,Java,Multithreading,Javafx,我正在尝试创建一个应用程序,它有一个工作进程在自己的线程中运行,并且基于工作进程正在执行的操作的GUI将更新。我知道如何使用基本绑定,但我希望根据我的工作类中的事件绘制自定义形状,并将它们添加到GUI上的不同TilePane中 我不知道如何实现这一点——我使用的所有绑定都是由JavaFX处理的——例如,我有一些表可以根据工作人员生成的内容更新数据,但这是非常有限的。 我如何基于在另一个线程中运行的事件创建一个新的形状(worker类与GUI完全分离,我必须保持这种方式以实现尽可能多的MVC模式。

我正在尝试创建一个应用程序,它有一个工作进程在自己的线程中运行,并且基于工作进程正在执行的操作的GUI将更新。我知道如何使用基本绑定,但我希望根据我的工作类中的事件绘制自定义形状,并将它们添加到GUI上的不同TilePane中

我不知道如何实现这一点——我使用的所有绑定都是由JavaFX处理的——例如,我有一些表可以根据工作人员生成的内容更新数据,但这是非常有限的。 我如何基于在另一个线程中运行的事件创建一个新的形状(worker类与GUI完全分离,我必须保持这种方式以实现尽可能多的MVC模式。本质上,我正在寻找一种从另一个类调用控制器中方法的方法)(我需要某种绑定/侦听器,我不知道该怎么做)


另外,我不想创建一个包含所有内容的大型控制器,但要尽可能使我的worker类独立于GUI实现。

对于Java中的额外工作,我们使用
服务
,它们是专门为JAVAFX主线程之外的额外工作而设计的外部线程。搜索教程。您可以使用
p如果您想在事件发生时更新GUI,请在它们内部使用latform.runLater(()->{°})
。您的问题实际上包括很多问题。请看一下上面的内容。当我想更新TableView中使用的数据的可观察列表(ModelData类的一部分)时,我已经在使用runLater了(使用.setItems)我的问题是,我不想绑定GUI组件和数据类中的属性,我想在我的工作人员运行时,通过创建新组件等从本质上改变UI。我不知道如何手动或在我的工作人员类中的事件中触发控制器中的方法,而不是依赖JavaFX observable list为我这样做与我的简单案例一样。通常,您会使用MVC类型的方法进行此操作。定义一个具有某种适当类型的可观察列表(表示您在UI中可视化的数据)的模型类。在工作类和GUI(控制器)之间共享一个模型实例。worker类可以向列表中添加项目:GUI可以向列表注册侦听器,并且在添加项目时,可以向平铺窗格中添加形状。这正是我正在尝试做的,实际上我的操作与此完全相同,但我的可观察列表仅用于TableView。不同的窗格没有任何适当的绑定来创建shapes。所以所有侦听器的注册等都由JavaFX处理。我不需要做任何事情。但是现在我希望一旦可观察列表发生变化,一个自定义处理程序绑定到我的窗格。我不知道如何做。我想使用JavaFX,因为它很简单,但现在我陷入了死胡同