3

多くのセクションを持つ PieChart があります。この PieChart の凡例は 1 つの行としてレンダリングされます。凡例を2列としてレンダリングする方法は?

4

2 に答える 2

9

ここに表示されているメソッドgetLegendItem()は、凡例項目を選択した任意の形式でレンダリングするために必要なすべての情報を提供します。任意の数の行に対してそれらを 2 列に配置します。既存の凡例を抑制するには、チャート ファクトリを呼び出すときにに設定します。ここで提案されているように、アイテムは引き続き利用できます。ContainerGridLayout(0, 2)legendfalse

補遺: に基づいてPieChartDemo1、このフラグメントはgetLegendItems().iteratorおよびこの のバリエーションを使用しColorIconます。

凡例の画像

public static JPanel createDemoPanel() {
    JPanel panel = new JPanel();
    JFreeChart chart = createChart(createDataset());
    panel.add(new ChartPanel(chart));
    panel.add(createLegendPanel((PiePlot) chart.getPlot()));
    return panel;
}

private static JPanel createLegendPanel(PiePlot plot) {
    JPanel panel = new JPanel(new GridLayout(0, 2, 5, 5));
    Iterator iterator = plot.getLegendItems().iterator();
    while (iterator.hasNext()) {
        LegendItem item = (LegendItem) iterator.next();
        JLabel label = new JLabel(item.getLabel());
        label.setIcon(new ColorIcon(8, item.getFillPaint()));
        panel.add(label);
    }
    return panel;
}
于 2012-11-09T14:07:14.250 に答える
2

Legend Alignmentに関するこのフォーラム スレッドも参照してください ( Web アーカイブ)。

あなたが探しているもののようです。そうでない場合は、持っているものと必要なものの詳細情報またはスクリーンショットを投稿してください。

于 2012-11-09T13:28:38.213 に答える