Barchart Bar的宽度在碧玉中非常细

问题描述 投票:1回答:1

我在ireport 3.0中创建了一个Barchart,问题是条形非常细。当我尝试通过自定义r类增加条宽度时,它没有反映条尺寸的任何变化,即宽度与以前相同。那么如何增加条形图的条形宽度呢?我附上一张图像副本,以供您理解。

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS8ySGNOMC5wbmcifQ==” alt =“在此处输入图像描述”>钢筋宽度如图所示。

Bar width

jasper-reports bar-chart jfreechart
1个回答
0
投票

我也面临同样的问题。经过长时间的搜索,我发现了一些解决了我问题的解决方案。碧玉报告条形图的条形宽度取决于图表的高度和宽度。由于碧玉在后端使用JFreechart,因此自定义类可以进行许多修改。为了增加条的宽度,您需要一个自定义类,然后将其添加到条形图jrxml中,例如波纹管

public class JasperBarChartCustomization implements JRChartCustomizer {
@Override
public void customize(JFreeChart chart, JRChart jasperChart) {
    CategoryPlot catPlot = (CategoryPlot) chart.getPlot();
    BarRenderer renderer = (BarRenderer) catPlot.getRenderer();
    renderer.setMaximumBarWidth(.08);//for max width//
    renderer.setItemMargin(-2);//as much margin decrease that much bar width increase//
    //for adding value ob bar//
    renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.CENTER, TextAnchor.CENTER));
    renderer.setBaseItemLabelPaint(Color.WHITE);
    renderer.setBaseItemLabelFont(new Font("fontname", Font.PLAIN, 6));
    //for remove legend background color and box border//
    if (chart.getLegend() != null) {
        chart.getLegend().setBorder(0.0, 0.0, 0.0, 0.0);
        LegendTitle legend = chart.getLegend();
        legend.setBorder(0, 0, 0, 0);
        legend.setFrame(BlockBorder.NONE);
    }
  }
}

现在从上面的类创建一个jar并将其用于ur jasper项目的类路径中

如果您的jasper在Java应用程序中运行,那么您可以直接使用该类而无需创建jar。在您的代码库中创建自定义类]

© www.soinside.com 2019 - 2024. All rights reserved.