You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 09:02:32