我想知道如何从GUI启动Jzy3D图形。基本上,我创建了一个简单的GUI,如果用户单击“ 3D图” JMenuItem,将允许他们显示带有分散点的3D图。但是,当我这样做时,不是弹出带有图形的白色窗口,而是弹出没有任何内容的纯白色窗口!另外,如果我将Jzy3D东西放在main方法中,它运行得很好。我不想这样做,我只希望用户单击该JMenuItem时才弹出图。

这是代码的相关部分。

public class OpenChart {

public void launch(){

    int size = 10000;
    float x;
    float y;
    float z;

    Coord3d[] points = new Coord3d[size];

    for(int i=0; i<size; i++){
        x = (float)Math.random() - 0.5f;
        y = (float)Math.random() - 0.5f;
        z = (float)Math.random() - 0.5f;
        points[i] = new Coord3d(x, y, z);
    }

    Scatter scatter = new Scatter(points);
    System.out.println("fwee: " + points.length);
    Chart chart = new Chart();
    chart.getAxeLayout().setMainColor(org.jzy3d.colors.Color.RED);
    chart.getView().setBackgroundColor(org.jzy3d.colors.Color.WHITE);
    chart.getScene().add(scatter);

    ChartLauncher.openChart(chart);
}

}


GUI JMenuItem代码:

testAll3D.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e)
        {
            OpenChart open = new OpenChart();
            open.launch();
        }
    });

最佳答案

事件调度线程(EDT)调度的所有摆动事件。

这也负责处理油漆请求。如果没有使用jzy3d,则两者可能相互阻塞(这可以解释为什么在单独运行它时可以工作)。

您可以尝试在另一个线程中启动图形。

07-24 13:36