Hallo zusammen, ich wünsche allen Lesern denen es etwas bedeutet ein frohes Weihnachtsfest.
Nun zu meinem Problem, bei dem ich schon fast am Verzweifeln bin. Nicht nur, dass ich es einfach nicht (reproduzierbar) hinbekomme, sondern, weil ich nun schon fast eine Woche an der Lösung arbeite.
Die Hintergrundfarbe eines Textfeldes soll sich, ja nach Wert der Variable, die im Textfeld dargestellt wird, ändern. Wert kleiner oder gleich dem Vergleichswert - grün, Wert größer als Vergleichswert - rot (im vorliegenden Code sind es grün und pink, daran nicht stören).
Nachdem ich gelernt habe, dass man in Java zwei BigDecimal nicht einfach mit >, <, = oder so vergleichen kann, sondern über compareTo geht, frage ich mich jetzt, was noch falsch ist.
Hier der Code für die Farbänderung:
Also nach meinem Verständnis müsste sich die Farbe, egal wie der Wert für $F{DiffAnteil108} auch ist, entweder in grün oder pink ändern. Tut er aber nicht.
Folgenden Code habe ich auch schon probiert:
Funktioniert ebenfalls nicht.
Da ich auf dem Gebiet Java ein absoluter Neuling bin, weiß ich auch nicht, ob das Java, welches im JasperReport verwendet wird, ein "normales" Java ist. Ich bin nämlich ob der verschiedenen Interpretationen von "compareTo" etwas verwirrt.
Einmal steht als Erläuterung hier http://www.java-forum.org/thema/die-compareto-methode.62607/
Und hier http://docs.oracle.com/javase/1.5.0...gDecimal.html#compareTo(java.math.BigDecimal)
steht:
Gehe jetzt davon aus, dass es einen Unterschied zwischen dem Vergleich (compare) von Strings und bei Dezimalzahlen gibt.
Der Wert der Variable ist aktuell kleiner als 3.8. Dem Feld wurde als Style "ColoredField1" zugewiesen. Das Feld ist als BigDecimal deklariert.
Würde auch gern Bilder dazu einfügen, weiß aber nicht wie es geht, da ich keine Bilder im Internet habe, sondern nur lokal auf meinem Rechner.
Was mache ich falsch?
Vielen Dank
Thomas
Nun zu meinem Problem, bei dem ich schon fast am Verzweifeln bin. Nicht nur, dass ich es einfach nicht (reproduzierbar) hinbekomme, sondern, weil ich nun schon fast eine Woche an der Lösung arbeite.
Die Hintergrundfarbe eines Textfeldes soll sich, ja nach Wert der Variable, die im Textfeld dargestellt wird, ändern. Wert kleiner oder gleich dem Vergleichswert - grün, Wert größer als Vergleichswert - rot (im vorliegenden Code sind es grün und pink, daran nicht stören).
Nachdem ich gelernt habe, dass man in Java zwei BigDecimal nicht einfach mit >, <, = oder so vergleichen kann, sondern über compareTo geht, frage ich mich jetzt, was noch falsch ist.
Hier der Code für die Farbänderung:
Code:
<style name="ColoredField1">
<conditionalStyle>
<conditionExpression><![CDATA[($F{DiffAnteil108}.compareTo(new BigDecimal(3.8)) == 0)]]></conditionExpression>
<style mode="Opaque" forecolor="#000000" backcolor="#51FC57"/>
</conditionalStyle>
<conditionalStyle>
<conditionExpression><![CDATA[($F{DiffAnteil108}.compareTo(new BigDecimal(3.8)) == -1)]]></conditionExpression>
<style mode="Opaque" forecolor="#000000" backcolor="#FF0FF0"/>
</conditionalStyle>
</style>
Folgenden Code habe ich auch schon probiert:
Code:
<style name="ColoredField1">
<conditionalStyle>
<conditionExpression><![CDATA[$F{DiffAnteil108}.compareTo(new BigDecimal(3.8)) == 0]]></conditionExpression>
<style mode="Opaque" forecolor="#000000" backcolor="#51FC57"/>
</conditionalStyle>
<conditionalStyle>
<conditionExpression><![CDATA[$F{DiffAnteil108}.compareTo(new BigDecimal(3.8)) == -1]]></conditionExpression>
<style mode="Opaque" forecolor="#000000" backcolor="#51FC57"/>
</conditionalStyle>
<conditionalStyle>
<conditionExpression><![CDATA[$F{DiffAnteil108}.compareTo(new BigDecimal(3.8)) == 1]]></conditionExpression>
<style mode="Opaque" forecolor="#000000" backcolor="#FF0FF0"/>
</conditionalStyle>
</style>
Da ich auf dem Gebiet Java ein absoluter Neuling bin, weiß ich auch nicht, ob das Java, welches im JasperReport verwendet wird, ein "normales" Java ist. Ich bin nämlich ob der verschiedenen Interpretationen von "compareTo" etwas verwirrt.
Einmal steht als Erläuterung hier http://www.java-forum.org/thema/die-compareto-methode.62607/
Gibt zurück: den Wert 0, wenn der Argument-String mit diesem String identisch ist; einen Wert kleiner als 0, wenn dieser String lexikographisch kleiner ist als der Argument-String; und einen Wert größer als 0, wenn dieser String lexikographisch größer als der Argument-String ist.
steht:
Returns:
-1, 0, or 1 as this BigDecimal is numerically less than, equal to, or greater than val.
-1, 0, or 1 as this BigDecimal is numerically less than, equal to, or greater than val.
Der Wert der Variable ist aktuell kleiner als 3.8. Dem Feld wurde als Style "ColoredField1" zugewiesen. Das Feld ist als BigDecimal deklariert.
Würde auch gern Bilder dazu einfügen, weiß aber nicht wie es geht, da ich keine Bilder im Internet habe, sondern nur lokal auf meinem Rechner.
Was mache ich falsch?
Vielen Dank
Thomas