2012-05-02 59 views
2

在JasperReports中,您總是爲定位報表元素設置絕對的x和y座標。例如,下面的例子 呈現一個黑色矩形(左上角(0,0)),它包含開始在x = 70白色文本字段的「Hello World」:在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> 

現在,我想使用DynamicReports實現相同。它應該與此類似:

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

不過,我不能找到一種方法來確定位置(在上面的Java示例,文本呈現矩形下方,而不是內

回答

1

有關。這個特殊情況下(矩形作爲文本框的周圍框),可以使用horizontalList s。水平列表有一個矩形作爲背景(顏色)並且具有固定的尺寸,爲了將文本移動到y = 2,可以添加一個薄的gap元素(寬度相同)作爲第一個水平列表包含,然後附加newRow。然後,帶有= 70的第二個間隙附加文本字段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(...) 
    ) 

雖然這適用於這種情況,但它是一種間接方法,容易引起混淆。此外,我想知道是否有您可以想到的每個定位任務的解決方案。

相關問題