我有一个包含许多部分的饼图,此饼图的图例呈现为一行。如何将图例渲染为两列?
答案 0 :(得分:9)
方法getLegendItem()
,见here,提供了在您选择的任何Container
中呈现图例项目所需的所有信息。 GridLayout(0, 2)
会将它们排列成两列,用于任意数量的行。要取消现有图例,请在调用图表工厂时将legend
设置为false
;根据建议here,这些项目仍然可用。
附录:根据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;
}
答案 1 :(得分:2)
看一下这个主题:Link
看起来像你正在寻找的东西。如果没有,请发布更多信息或截图,了解您拥有的和所需的信息。