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

标签 java jasper-reports ireport

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

enter image description here

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

最佳答案

您必须将作为类别标签打印的字符串值包装到满足唯一性约束的对象中。您必须创建一个实现 Comparable 接口(interface)的 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() 方法应该返回您想要作为标签打印的字符串。在您的报告中,用于图表的字段必须是 UniqueCategoryLabel 类型,而不是 String,这样就可以发挥所有作用。

关于java - Jasper报告折线图类别表达式相同的值仅打印一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14660917/

相关文章:

jasper-reports - Jasper报表中如何计算除法和乘法?

java - 使用 PrinterJob 时出现 NullPointerException

javaFX:错误的合并排序动画结果

java - 将自定义数据源添加到 Jaspersoft Studio

java - 编译报告java源文件时出错

java - PDF 中的图像为黑色

java - 如何在 JasperReports 中从 Java 向报表传递多个参数并导出为 PDF

java - 我怎样才能直接忽略这个标签来使用 JSOUP 只使用文本信息?

java - Java 中的 LinkedList 和导入

jasper-reports - 在 jasper 报告中表达时的框架