是否可以在普通的Java应用程序中使用JavaFX绘制图形?

时间:2014-01-15 08:19:33

标签: java graph javafx

我想绘制一些用Java编码的模拟过程中收集的统计图表。我决定尝试JavaFX,因为它有一些很棒的图形功能。但是,由于我以前从未使用它,我不确定是否甚至可以将JavaFX功能添加到最初未设置的项目中。

我已将javafx库添加到我的项目中,并在http://docs.oracle.com/javafx/2/charts/line-chart.htm(没有主函数)的线图上复制粘贴JavaFX教程,以测试图表是否正确显示。

但是,他们没有。我使用

在我的运行模拟函数(从SwingWorker线程调用)中调用图形
LineChartSample.launch(new String());

并且在运行程序并且没有看到任何图形之后,我在调用之后添加了一个println并注意到该程序没有到达它;即它终止于对LineChartSample的调用。

我做错了吗?我正在尝试甚至可能吗?

编辑:快速总结代码的这一部分:

InputGUI类中的JButton调用

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
     new AnswerWorker().execute();
}


public class AnswerWorker extends SwingWorker<Void, Integer> {

protected Void doInBackground() throws Exception
{
    AMEC.runsimulation();
    return null;
}
protected void done()
{
try {
    JOptionPane.showMessageDialog(InputGUI.this, AMEC.unsuccesfulpercentage + "% of iterations had trucks that had to sleep over");
    AMEC.unsuccesfulpercentage = 0;
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }

}

AMEC.runsimulation调用

public static void runsimulation() throws IOException, InterruptedException {
...
    LineChartSample.launch(new String());
}

我得到了AnswerWorker完成时抛出的JDialogBox,但没有图表,每当我在LineChartSample.launch调用后测试println时,它就永远无法到达。

1 个答案:

答案 0 :(得分:2)

public static void runsimulation() throws IOException, InterruptedException {
    ...
    LineChartSample.launch(LineChartSample.class, "");
}    

了解更多信息:

http://docs.oracle.com/javafx/2/api/javafx/application/Application.html#launch%28java.lang.String...%29

请注意,您不应该这样做,因为您无法在应用程序生命周期中多次调用此代码。相反,您应该从构建场景图的LineChartSample中提取代码,并使用JFXPanel将场景图embed放入您的swing应用程序中。