2016-02-25 85 views
0

我正在开发Eclipse的插件。我正在使用JavaFX来实现此插件的多种功能。我有一个Eclipse的UI内置的菜单,每个命令都有处理程序,即每个功能都被点击。例如:用户点击“开始符号表”,然后调用SymbolTableHandler。多个JavaFX application.launch()来自插件作业

这些处理程序中的每一个都从Eclipse作业启动JavaFX应用程序,以确保UI不会无响应。 JavaFX应用程序使用application.launch()开始。

我的问题是,当用户启动两个功能时,由于仅允许调用application.launch()一次的限制而引发错误。

这不会是一个问题,如果所有的功能开始在一起,我可以创建新的阶段等等

那么,有没有办法模仿application.launch多次这么多个表/这个插件的功能,可以一起跑?

我想出了一个解决方案,如果有人关心的代码。

回答

0

从JavaFX应用程序的javadoc,推出将做到这一点:

  1. 构建指定的应用程序类
  2. 的实例调用init()方法
  3. 调用start(javafx.stage.Stage )方法
  4. 等待应用程序完成,发生以下任一情况时发生: 发生以下任一情况:应用程序调用Platform.exit()最后一个 窗口已关闭,Platfo上的implicitExit属性RM是 真正
  5. 调用stop()方法

所以,与其做调用启动(),自己做上述任务(例如,创建你自己的自定义启动器)。

的发射也将启动JavaFX平台,所以你需要触发间接,如果它尚未完成,由creating a JFXPanel()

当然,棘手的部分是4.基本上,你不能这样做,因为你不能做4,你不知道什么时候做5.所以你的“应用程序”将需要写一些约束(例如,它们不会调用Platform.exit(),因为它会立即关闭所有活动插件)。您可以将侦听器放置在自定义启动器中创建的舞台上,然后传递到第3步,然后当该舞台关闭时调用stop()方法。

上面列出的解决方案有点不方便,但可能适用于您。

参见相关:

+0

谢谢你,有没有什么标准,当涉及到我的那种方法?当然有插件必须从菜单创建多个FXML GUI? – UnholySalmon

+0

你的方法不是标准的,大多数应用程序只能使用标准的JavaFX启动工具,但是大多数应用程序不是Eclipse插件。我鼓励你问你关于在Eclipse插件中直接使用JavaFX到[e(fx)clipse社区](http://www.eclipse.org/efxclipse/community.html)的问题,谁是这方面的专家领域。 – jewelsea

+0

我想出了一个解决方案,为任何人想要使用JavaFX的Eclipse插件与多个用户界面的不同处理程序创建。 – UnholySalmon