2012-05-02 12 views
2

JasperReportsでは、レポート要素の位置決めに常に絶対x座標とy座標を設定します。私が欲しい、今DynamicReportsでは、どのようにレポート要素の絶対座標を設定しますか

<rectangle> 
    <reportElement x="0" y="0" width="557" height="20" backcolor="#000000" /> 
    <graphicElement fill="Solid"> 
     <pen lineWidth="0"/> 
    </graphicElement> 
</rectangle> 

<textField> 
    <reportElement x="70" y="2" width="100" height="14" style="pageLayoutFont"/> 
    <textElement textAlignment="Left" verticalAlignment="Middle" /> 
    <textFieldExpression class="java.lang.String"> 
     <![CDATA["Hello World"]]> 
    </textFieldExpression> 
</textField> 

:たとえば、次の例 は、x = 70で始まり、白いテキストフィールドに「Hello World」が含まれている((0,0)の左上隅)黒の四角形を描画しDynamicReportsを使用して同じことを達成します。それは次のように動作するはずです:

report().addDetail(
    cmp.rectangle() 
     .setDimension(557, 20).setStyle(...), 
    cmp.text("Hello World").setStyle(...) 
); 

しかし、私は(上記のJavaの例では、テキストがない範囲内で、長方形の下に描画される位置を決定する方法を見つけることができません

答えて

1

をするために。この特定の場合(テキストフィールドの囲み枠としての矩形)、horizontalListを使用することができます。水平リストは、背景(色)として長方形を持ち、固定寸法を持ちます。最初の水平リスト包含として細いgap要素(同じ幅)を追加してからnewRowを追加すると、with = 70の第2のギャップにテキストフィールドが追加されますHello Worldまた、ギャップをなくし、テキストフィールドにパディングスタイルを追加することもできます。

cmp.horizontalList() 
    .setFixedDimension(557, 20) 
    .setBackgroundComponent(...) 
    .add(
     //1. a thin gap element 
     cmp.gap(557,2) 
    ) 
    .newRow() 
    .add 
    (
     //2. a gap of width 70 
     cmp.gap(70,13), 
     //3. the text field 
     cmp.text("Hello World").setStyle(...) 
    ) 

このケースでは機能しますが、これは簡単に混乱する可能性のある間接的なアプローチです。さらに、あなたが考えることができるあらゆるポジショニングタスクの解決策があるのだろうかと思います。

関連する問題