2016-04-22 74 views
0

我从我的java类调用另一个javafx类作为后台线程。如何从java类调用javafx类?

 while(true) 
    { 
    .... 
    .... (build new arguments) 
    .... 

    Thread t = new Thread() { 
     public void run() { 
      ChartData.main(arguments); 
     } 
    }; 
    t.start(); 
    } 

我得到一个错误:

Exception in thread "Thread-7" java.lang.IllegalStateException: Application launch must not be called more than once at om.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:94) at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:75) at javafx.application.Application.launch(Application.java:209)

javafx类我已经建造只有散点图和 我所有的其他物体在java类已经实现。

谢谢你的帮助。

回答

1

这不是JavaFX的工作方式。

你有2种选择:

  1. 使你的程序正确的JavaFX应用程序,更新你的图纸,图形用户界面,或任何内容。 (您不需要额外的线程:只需使用invokeLater将某些内容提交给UI线程即可)。

  2. 而不是线程,请在其自己的进程中运行单独的JavaFX,请参阅ProcessBuilder。尽管这样比较干净,但您必须考虑如何将数据传递给流程

+0

第三种选择:使用java应用程序和javafx应用程序之间的本地网络连接。 – 2016-04-22 08:54:40

+0

谢谢Ingo,如果我正确理解,我必须启动我的javafx类,例如:'ProcessBuilder processBuilder = new ProcessBuilder(“command”,“第一个参数”,“TheSecondWithoutSpace”);'......对吗? – Lolitta