簡體   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