Java 如何在列中显示饼图的图例?
我有一个有许多部分的饼图,这个饼图的图例呈现为一行。如何将图例呈现为两列?请查看上的论坛帖子,也可以在()Java 如何在列中显示饼图的图例?,java,render,jfreechart,legend,Java,Render,Jfreechart,Legend,我有一个有许多部分的饼图,这个饼图的图例呈现为一行。如何将图例呈现为两列?请查看上的论坛帖子,也可以在() 看起来像是你在找的东西。如果没有,请发布您所拥有和需要的更多信息或屏幕截图。方法getLegendItem(),提供在您选择的任何容器中呈现图例项目所需的所有信息GridLayout(0,2)将它们排列在两列中,以容纳任意数量的行。要抑制现有图例,请在调用图表工厂时将图例设置为假;按照建议,这些项目仍将可用 附录:基于,此片段使用了getLegendItems().iterator及其变体
看起来像是你在找的东西。如果没有,请发布您所拥有和需要的更多信息或屏幕截图。方法
getLegendItem()
,提供在您选择的任何容器中呈现图例项目所需的所有信息GridLayout(0,2)
将它们排列在两列中,以容纳任意数量的行。要抑制现有图例,请在调用图表工厂时将图例
设置为假
;按照建议,这些项目仍将可用
附录:基于,此片段使用了getLegendItems().iterator
及其变体
不幸的是,这只适用于jfreechart的旧版本。。。但至少它展示了如何为较新版本的jfc创建另一个多列legend类。:)+1@brimborium哦,我看到这个线程已经有几年的历史了,但实际上我没有检查代码。我仍然在向正确的方向努力guess@moeTi:此处相同,但链接已断开。你能找到原版吗?@trashgood在wayback机器中找到并更新了原版post@moeTi:谢谢!我补充了一个链接到原始论坛线程的Web存档链接。还考虑了<代码> PlotChangeListener <代码>来更新图例面板。
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;
}