在 JFreeChart 中设置系列线条样式和图例大小
Setting series line style and legend size in JFreeChart
我正在尝试修改 here 中的图例侦听器,使系列线条样式更粗,并在单击特定图例时使图例尺寸更大。
但我无法使以下功能正常工作:
plot.getLegendItems().get(index).set...
在下面的示例中,将以下内容写入控制台:java.awt.Color[r=192,g=0,b=0]。为什么不改成java.awt.Color[r=10,g=10,b=225]?
此外,如果我将 plot.getLegendItems().get(index).getLabelFont() 写入控制台,那么它 returns 为空。
ticPlot.addChartMouseListener(new ChartMouseListener() {
@Override
public void chartMouseClicked(ChartMouseEvent event) {
ChartEntity entity = event.getEntity();
if (entity instanceof LegendItemEntity) {
LegendItemEntity itemEntity = (LegendItemEntity) entity;
DataFile files[] = ticDataSets.keySet().toArray(new DataFile[0]);
Arrays.sort(files, new SimpleSorter());
int index = -1;
for (int i = 0; i < files.length; i++) {
if (files[i].getName().equals(itemEntity.getSeriesKey())) {
index = i;
break;
}
}
//set the renderer to hide the series
XYPlot plot = (XYPlot) ticPlot.getChart().getPlot();
plot.getLegendItems().get(index).setLinePaint(new Color(10,10,255));
plot.getLegendItems().get(index).setLabelFont(new Font("TimesRoman", Font.PLAIN, 40));
System.out.println( plot.getLegendItems().get(index).getLinePaint());
System.out.println(plot.getLegendItems().get(index).getLabelFont());
}
}
});
我发现以下方法有效
XYPlot plot = (XYPlot) ticPlot.getChart().getPlot();
final XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) plot.getRenderer(index);
renderer.setBaseLegendTextFont(new Font("Helvetica", Font.BOLD, 11));
renderer.setSeriesStroke(0, new BasicStroke(4));'
奇怪为什么 plot.getLegendItems().get(index).set... 不起作用?
我正在尝试修改 here 中的图例侦听器,使系列线条样式更粗,并在单击特定图例时使图例尺寸更大。
但我无法使以下功能正常工作:
plot.getLegendItems().get(index).set...
在下面的示例中,将以下内容写入控制台:java.awt.Color[r=192,g=0,b=0]。为什么不改成java.awt.Color[r=10,g=10,b=225]?
此外,如果我将 plot.getLegendItems().get(index).getLabelFont() 写入控制台,那么它 returns 为空。
ticPlot.addChartMouseListener(new ChartMouseListener() {
@Override
public void chartMouseClicked(ChartMouseEvent event) {
ChartEntity entity = event.getEntity();
if (entity instanceof LegendItemEntity) {
LegendItemEntity itemEntity = (LegendItemEntity) entity;
DataFile files[] = ticDataSets.keySet().toArray(new DataFile[0]);
Arrays.sort(files, new SimpleSorter());
int index = -1;
for (int i = 0; i < files.length; i++) {
if (files[i].getName().equals(itemEntity.getSeriesKey())) {
index = i;
break;
}
}
//set the renderer to hide the series
XYPlot plot = (XYPlot) ticPlot.getChart().getPlot();
plot.getLegendItems().get(index).setLinePaint(new Color(10,10,255));
plot.getLegendItems().get(index).setLabelFont(new Font("TimesRoman", Font.PLAIN, 40));
System.out.println( plot.getLegendItems().get(index).getLinePaint());
System.out.println(plot.getLegendItems().get(index).getLabelFont());
}
}
});
我发现以下方法有效
XYPlot plot = (XYPlot) ticPlot.getChart().getPlot();
final XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) plot.getRenderer(index);
renderer.setBaseLegendTextFont(new Font("Helvetica", Font.BOLD, 11));
renderer.setSeriesStroke(0, new BasicStroke(4));'
奇怪为什么 plot.getLegendItems().get(index).set... 不起作用?