Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在列中显示饼图的图例?_Java_Render_Jfreechart_Legend - Fatal编程技术网

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;
}