1

GUI から Jzy3D グラフを起動する方法を知りたいです。基本的に、ユーザーが「3D グラフ」JMenuItem をクリックすると点が点在する 3D グラフを表示できるシンプルな GUI を作成しました。ただし、これを行うと、グラフが表示された白いウィンドウの代わりに、何も表示されていない真っ白なウィンドウがポップアップします! また、Jzy3D のものをメイン メソッドに入れると、完全に正常に動作します。私はこれをしたくありません。ユーザーがその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();
        }
    });
4

1 に答える 1

1

イベント ディスパッチ スレッド (EDT) によってディスパッチされるすべてのスイング イベント。

これは、ペイント要求の処理も担当します。jzy3d を使用していない場合、この 2 つが互いにブロックしている可能性があります (これは、スタンドアロンで実行したときに機能する理由を説明している可能性があります)。

別のスレッドでグラフを起動してみてください。

于 2013-06-11T04:21:46.387 に答える