如何为JFreeChart的LegendItem形状添加边框(非LegendTitle)
给LegendItem的形状添加边框(而非LegendTitle)
Got it!要给图例项(LegendItem)的形状单独添加边框,而不是给整个图例标题(LegendTitle)加框,直接用JFreeChart给LegendItem提供的专属方法就可以搞定,不用折腾整个图例标题的样式。
修改后的完整代码示例
LegendItemCollection chartLegend = new LegendItemCollection(); Shape legendShape = new Rectangle(10, 10); LegendItem legendItem = new LegendItem("Text", someColor); // 核心:给图例项的形状设置边框 legendItem.setOutlinePaint(Color.BLACK); // 自定义边框颜色,比如黑色 legendItem.setOutlineStroke(new BasicStroke(1.0f)); // 边框粗细,这里设为1像素实线 legendItem.setLabelFont(new Font(ARIAL_FONT, Font.PLAIN, 8)); legendItem.setShape(legendShape); chartLegend.add(legendItem); plot.setFixedLegendItems(chartLegend); GridArrangement grid = new GridArrangement(3, 1); LegendTitle legendTitle = new LegendTitle(plot, grid, grid); legendTitle.setBackgroundPaint(Color.WHITE); legendTitle.setPosition(RectangleEdge.BOTTOM); legendTitle.setItemLabelPadding(new RectangleInsets(0, 1, 0, 5)); legendTitle.setPadding(new RectangleInsets(0, 15, 0, 0)); chart.addLegend(legendTitle);
关键细节说明
setOutlinePaint(Color):专门控制单个图例项形状的边框颜色,你可以换成任何需要的颜色(比如Color.GRAY、Color.BLUE)setOutlineStroke(Stroke):设置边框的线条样式,示例里的BasicStroke(1.0f)是1像素的实线边框。如果需要虚线边框,可以用类似这样的代码:legendItem.setOutlineStroke(new BasicStroke( 1.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND, 0.0f, new float[]{3.0f, 1.0f}, // 虚线的间隔:3像素实线+1像素空白 0.0f ));- 这种方式只会作用于你指定的
LegendItem的形状,完全不会影响LegendTitle的整体样式,完美匹配你的需求。
内容的提问来源于stack exchange,提问作者emoleumassi
相关产品推荐
相关产品推荐

