繁体   English   中英

Jasper报告折线图类别表达式相同的值仅打印一次

[英]Jasper report Line chart Category expression same value is printed only once

我正在使用Jasper报告折线图。 在该折线图类别表达式中, 相同的值仅打印一次

在此处输入图片说明

在此,将“在线名称中”列指定为折线图中的类别表达式 不打印冗余值。 仅打印唯一名称 我想要我所有的名字 ,即使它是同一个名字。 如何解决此问题?

您必须将打印为类别标签的String值包装到满足唯一性约束的对象中。 您必须创建一个实现Comparable接口的java类,因为只有不相等的对象才作为单独的类别值打印。 以下代码显示了如何实现此类:

public class UniqueCategoryLabel implements Comparable<UniqueCategoryLabel> {

    private Double id;
    private String value;

    public UniqueCategoryLabel(String value, Double id) {
        this.value = value;
        this.id = id;
    }

    @Override
    public int compareTo(UniqueCategoryLabel v) {
        return this.id.compareTo(v.id);
    }

    @Override
    public boolean equals(Object v) {
        return v instanceof UniqueCategoryLabel && this.id.equals(((UniqueCategoryLabel) v).id);
    }

    @Override
    public int hashCode() {
        return this.id.hashCode();
    }

    @Override
    public String toString() {
        return value;
    }
}

您可以通过使用不同的ID创建UniqueCategoryLabel实例来提供唯一性,因为equals方法检查比较对象的ID是否相同。 图表本身的标签是通过使用提供的对象的toString()方法创建的,因此您的toString()方法应返回要打印为标签的String。 在报告中,用于图表的字段必须是UniqueCategoryLabel类型,而不是String类型,这应该可以解决所有问题。

您将需要在类别表达式中添加唯一标识符,因为这是显示重复值的唯一方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM