1

JFrameでjzy3dチャートを作成するための次のコードがあります。

public class SurfaceViewerFrame extends IconFrame {

    public SurfaceViewerFrame() {
        setResizable(false);
        //System.loadLibrary("lib/jogl2-rc10/gluegen-rt.jar");
        Settings.getInstance().setHardwareAccelerated(true);
        FormLayout layout=new FormLayout("10px, 300px, 10px", "30px, 10px, 20px, 300px, 10px");
        CellConstraints сс=new CellConstraints();

        JLabel title=new JLabel("Выходная поверхность");


        Mapper mapper = new Mapper() {
            public double f(double x, double y) {
                return x * Math.sin(x * y);
            }
        };
        // Define range and precision for the function to plot
        Range range = new Range(-300, 300);
        int steps = 80;

        // Create the object to represent the function over the given range.
        final Shape surface = Builder.buildOrthonormal(new OrthonormalGrid(range, steps, range, steps), mapper);
        surface.setColorMapper(new ColorMapper(new ColorMapRainbow(), surface.getBounds().getZmin(), surface.getBounds().getZmax(), new Color(1, 1, 1, .5f)));
        surface.setFaceDisplayed(true);
        surface.setWireframeDisplayed(false);

        // Create a chart
        Chart chart = new Chart(Quality.Advanced, "awt");
        chart.getScene().getGraph().add(surface);
        chart.addController(new CameraKeyController());

//      ChartLauncher.openChart(chart, new Rectangle(0, 0, 100, 100), "122");

        JPanel panel=new JPanel();
        panel.add(title, сс.xy(1, 1));
        panel.add((Component)chart.getCanvas(), CC.xy(1, 3));
        add(panel);
        setSize(320, 370);
        setVisible(true);
    }
}

しかし、openChart()メソッドを推奨しないと、何も表示されません。これを行うと、JFrameにChartがあり、新しい空のJFrameがあります。使いたくない。教えてください、どうすれば修正できますか?新しいグラフィックを作成せずに、JFrameにグラフィックを表示する必要があります。

更新:申し訳ありませんが、jzy3dは3Dサーフェスを作成するためのライブラリです。そして、このコードは機能します。他のLayoutManagerは必要ありません。もう一度質問を読んでください。

4

1 に答える 1

3

ACardLayoutはこの用途に適しています。詳細と実際の例については、 CardLayout の使用方法を参照してください。

データを結合するためのその他の戦略は、この回答から「複数の JFrames の使用、良い/悪い習慣?」にリンクされています。.

アップデート

その想いを形にするために。

  • フレームを拡張しないでください。単にパネルへの参照を保持してください。
  • パネルをGridLayoutorBorderLayoutにします (制約なしでいずれかに追加された単一のコンポーネントは、使用可能な幅と高さに引き伸ばされます)。
  • 上記のコード スニペットで行っているのと同じように、そのパネルに入力します。
  • CardLayoutそのパネルをメイン (および唯一の) フレームのカードに追加します。
  • (必要に応じて)そのカードにめくります。
于 2012-10-18T07:06:04.503 に答える