如何通过某些组中的最长文本自动设置字段的最小宽度

时间:2012-01-20 10:19:24

标签: jasper-reports ireport

我使用iReport创建报告,我想知道是否有办法设置“光学分组字段”的宽度。它们应设置为仍显示最长文本的最小尺寸。我在左侧有静态文本,右侧有文本字段。此文本字段设置为宽度150并向右对齐,但我想设置较小的尺寸以消除空白区域。

考虑像这样的事情

   Name:            Paul
Surname:         Smither  

并希望自动

   Name:    Paul
Surname: Smither 

等。可以小于预设尺寸但不大。

有办法吗?甚至一些组件

2 个答案:

答案 0 :(得分:0)

如果不使用Java框架,无法动态更改元素宽度。

JasperReports Ultimate Guide的引用:

  

元素大小

     

width和height属性是必需的,表示大小   以像素为单位测量的报告元素。其他元素拉伸   设置可能会指示报告引擎忽略指定的   元素高度。即使在这种情况下,属性仍然是必需的   因为即使动态计算高度,元素也会   不小于最初指定的高度。

您可以阅读this article以更好地了解更改元素大小的机制。

答案 1 :(得分:0)

如果它真的只是来自数据集中同一行的几个字段,那么你可以一起破解。

  • 使用等宽字体
  • 使用设置为N个空格的String定义最大字段长度。例如:
    $ P {MaxLengthString}默认值为10个空格:" "
  • 将您的字段文本从$F{FirstName}更改为:

    $P{MaxLengthString}.substring(
      $P{MaxLengthString}.length() + $F{FirstName}.length() - java.lang.Math.max($F{FirstName}.length(), $F{LastName}.length())
    ) + $F{FirstName}
    

那是......呃......有点复杂。它只适用于等宽字体。而且我无法相信我真的建议了这一点。不要这样做。 (但它应该有效。)