2008-12-05 27 views
6

Necesito tener un staticText para flotar debajo de otro elemento con altura variable. Estoy tomando una muestra del libro JasperReports for Java Programmers. Dice que es posible hacerlo. La diferencia con mi muestra es que utilizo una cadena codificada en textFieldExpression, usan un campo $ F {}.JasperReports: does positionType = '' Float '' funciona para staticText?

<textField isStretchWithOverflow="true" hyperlinkType="None"> 
    <reportElement x="0" y="0" width="100" height="24"/> 
    <box> 
     <pen lineWidth="0.5" lineStyle="Solid"/> 
    </box> 
    <textElement/> 
    <textFieldExpression class="java.lang.String"><![CDATA["jjjjjjjjjjj oooooooooo uuuuuuuuuu aaaaaaaaaa xxxxxxxxx u ttttt"]]></textFieldExpression> 
</textField> 
<staticText> 
    <reportElement positionType="Float" x="0" y="25" width="500" height="30"/> 
    <box> 
     <pen lineWidth="0.5" lineStyle="Solid"/> 
    </box> 
    <textElement/> 
    <text><![CDATA[ This staticText element has a positionType of "Float" ppp ]]></text> 
</staticText> 

Se dice que cuando se utiliza positionType="Float", el atributo y se ignora, ya que el staticText se sitúa por debajo de la textField. Esto parece funcionar, PERO ... ¿es posible que me lo estén diciendo? El textField tiene y = 0 y altura = 24. El staticText tiene y = 25. ¿Coincidencia? Si cambio el y de staticText, es obvio que no se ignora: el elemento se posiciona donde yo le diga. ¡No hay flotante! cita del libro:

As we can see, setting the positionType attribute of <reportElement> to Float made JasperReports ignore the y position of the <staticText> element, which was pushed down by the stretched <textField> element.

No, no vemos cómo está siendo ignorada ya que y = 25 es donde esperábamos! ¿Funciona positionType="Float" para staticText en absoluto? Gracias!

Respuesta

2

aplica This answer (elementos diferentes, misma situación).

Una cosa que no tomé directamente de la muestra del libro es que la altura declarada del campo de texto (24) es menor que la altura real cuando se estira el elemento. Entonces, y = "25" en staticText mapearía arriba de su posición actual; ¡el elemento en realidad está flotando hacia abajo!

5

Mi comprensión de la naturaleza flotante es que el objeto flotante se moverá hacia abajo si es necesario, pero si el objeto anterior es más pequeño de lo esperado, no se mueve hacia arriba.

No recuerdo haber tenido ningún problema con los objetos flotantes que en realidad no flotan cuando es necesario, ya sean texto estático o campos de texto.

En otra nota, si encuentra que un campo de texto funciona, puede usarlo para mostrar texto estático al poner su texto entre comillas en el valor del campo de texto (convirtiéndolo en un objeto Java).