Tengo un PieChart con muchas secciones, la leyenda para este PieChart se presenta en una sola fila. ¿Cómo renderizar la leyenda como dos columnas?
El método getLegendItem()
, visto aquí , proporciona toda la información necesaria para representar un elemento de leyenda en cualquier Container
que elija. GridLayout(0, 2)
los organizará en dos columnas para cualquier cantidad de filas. Para suprimir la leyenda existente, establezca legend
en false
cuando llame a su fábrica de gráficos; los artículos seguirán estando disponibles, como se sugiere aquí .
Addendum: Basado en PieChartDemo1
, este fragmento usa el getLegendItems().iterator
Y una variación de este 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; }
Eche un vistazo a este hilo: Enlace
Parece algo que estás buscando. De lo contrario, publique más información o capturas de pantalla de lo que tiene y de lo que necesita.