1

単一のウィンドウ内に複数の jfreecharts を表示しようとしています。どうやらこれは含まれている ChartFrame では不可能なので、同じチャートの複数のコピーを JFrame に追加しようとしましたが、うまくいきませんでした。何か案は?

JFrame frame = new JFrame("Chart");
frame.getContentPane().add(new ChartPanel(chart1));
frame.getContentPane().add(new ChartPanel(chart2));
frame.pack();
frame.setVisible(true);

このコードでは、JFrame で 1 つのグラフしか取得できません。

編集:別のデータセットとグラフを追加しましたが、まだそのうちの 1 つしか表示されません。

4

2 に答える 2

5

問題の原因は のレイアウトですframe.getContentPane()JFrameコンテンツ ペインのデフォルト レイアウト- BorderLayout. 詳しくはBorderLayout こちらをご覧ください。この操作

frame.getContentPane().add(new ChartPanel(chart));

等しい

frame.getContentPane().add(new ChartPanel(chart), BorderLayout.CENTER);

ChartPanelコンテンツ ペインの CENTER 領域に追加します。次にChartPanel、CENTER エリアにも追加します。次に、同じ領域に 2 つのコンポーネントを追加します。最後に追加されたコンポーネントは、以前に追加されたすべてのコンポーネントを非表示にします。したがって、2 番目の ChartPanel は最初の ChartPanel を非表示にします。

のレイアウトを変更する必要がありますframe.getContentPane()

同じチャートを2つまで使用できますChartPanel。コードを次のように変更してみてください

JFrame frame = new JFrame("Chart");
frame.getContentPane().add(new ChartPanel(chart), BorderLayout.WEST);
frame.getContentPane().add(new ChartPanel(chart), BorderLayout.EAST);
frame.pack();
frame.setVisible(true);

本番用のコードではありません。ChartPanelフレームに2つ表示するのは単なる例です。

于 2012-08-15T18:35:18.747 に答える
1

異なるチャート インスタンスが必要です。同じ参照を使用すると、ChartPanel に最後に追加されたものが表示されます。

于 2012-08-15T18:05:55.717 に答える