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

Java Jasper报告折线图类别表达式同一值仅打印一次,java,jasper-reports,ireport,Java,Jasper Reports,Ireport,我使用的是Jasper报告折线图。在该折线图类别表达式中,相同的值只打印一次 在这里,“线程名称”列在折线图中指定为类别表达式。不打印冗余值仅打印唯一的名称我想要我所有的名字,即使是同一个名字。如何解决这个问题 您需要向类别表达式添加唯一标识符,因为这是显示重复值的唯一方法 必须将打印为类别标签的字符串值包装到满足唯一性约束的对象中。您必须创建一个实现可比较接口的java类,因为只有不相等的对象才会打印为单独的类别值。以下代码显示了如何实现此类类: public class UniqueCat

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


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

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

必须将打印为类别标签的字符串值包装到满足唯一性约束的对象中。您必须创建一个实现可比较接口的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;
    }
}
公共类UniqueCategoryLabel实现可比较{
私人双身份证;
私有字符串值;
公共UniqueCategoryLabel(字符串值,双id){
这个值=值;
this.id=id;
}
@凌驾
公共int比较(唯一类别标签v){
将此.id.compareTo返回(v.id);
}
@凌驾
公共布尔等于(对象v){
返回UniqueCategoryLabel的v instanceof&&this.id.equals((UniqueCategoryLabel)v.id);
}
@凌驾
公共int hashCode(){
返回此.id.hashCode();
}
@凌驾
公共字符串toString(){
返回值;
}
}

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

谢谢,我的问题与OP完全相同,您的解决方案也很有效。