【问题标题】:How to launch a Jzy3d graph from GUI?如何从 GUI 启动 Jzy3d 图形?
【发布时间】:2012-07-21 01:36:14
【问题描述】:

我想知道如何从 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();
        }
    });

【问题讨论】:

  • 是否尝试在 ETD 之外启动图表?
  • 对不起,ETD 是什么意思?
  • 由事件调度线程 (etd) 调度的所有摇摆事件。这也负责处理绘制请求。没有使用过 jzy3d,我们有可能两者相互阻塞(这可以解释为什么当你独立运行它时它会起作用)。您可以尝试在另一个线程中启动图表
  • 我从动作监听器部分启动了一个线程,它工作了!非常感谢您的帮助!
  • 只是一个幸运的猜测,但值得一试:)

标签: java swing opengl graphics jzy3d


【解决方案1】:

由事件分派线程 (EDT) 分派的所有摇摆事件。

这也负责处理绘制请求。没有使用过 jzy3d,这两者可能会相互阻塞(这可以解释为什么当你独立运行它时它会起作用)。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-08
    • 1970-01-01
    • 2013-06-18
    • 2012-04-27
    • 1970-01-01
    • 2011-12-24
    相关资源
    最近更新 更多