Bueno ya encontre la solucion.
Primero tiene que ser con idioma groovie en el ireport
usar stilos
Código HTML:
<style name="Semaforo" isDefault="false" mode="Opaque" backcolor="#FF0000">
<conditionalStyle>
<conditionExpression><![CDATA[new Boolean( $F{semaforo}.equals("CRITICO") )]]></conditionExpression>
<style isDefault="false" style="Semaforo" mode="Opaque" backcolor="#FF0000"/>
</conditionalStyle>
<conditionalStyle>
<conditionExpression><![CDATA[new Boolean( $F{semaforo}.equals("BUENA") )]]></conditionExpression>
<style isDefault="false" style="Semaforo" mode="Opaque" backcolor="#FF9900"/>
</conditionalStyle>
<conditionalStyle>
<conditionExpression><![CDATA[new Boolean( $F{semaforo}.equals("MUY BUENA") )]]></conditionExpression>
<style isDefault="false" style="Semaforo" mode="Opaque" backcolor="#FF9900"/>
</conditionalStyle>
<conditionalStyle>
<conditionExpression><![CDATA[new Boolean( $F{semaforo}.equals("EXCELENTE") )]]></conditionExpression>
<style isDefault="false" style="Semaforo" mode="Opaque" backcolor="#009900"/>
</conditionalStyle>
</style>
y en el elemento del reporte decir ke estilo es
Código HTML:
<textField>
<reportElement style="Semaforo" mode="Opaque" x="414" y="0" width="98" height="20"/>
<textElement>
<font size="12"/>
</textElement>
<textFieldExpression class="java.lang.String"><![CDATA[$F{semaforo}]]></textFieldExpression>
</textField>
Esto lo hace de una forma mas larga a la que yo queria, pero pues no he encontrado a cortar esto, espero a alquien le sirva