Jasper reports 如何根据组中最长文本自动设置字段的最小宽度

Jasper reports 如何根据组中最长文本自动设置字段的最小宽度,jasper-reports,ireport,Jasper Reports,Ireport,我使用iReport创建报告,我想知道是否有办法设置“光学分组字段”的宽度。它们应设置为最小大小,以显示最长的文本。我在左边有静态文本,右边有文本字段。此文本字段设置为宽度150,对齐方式设置为右侧,但我希望设置较小的大小以消除空白 考虑一下这样的事情 Name: Paul Surname: Smither 并且想要自动地 Name: Paul Surname: Smither 等可以小于预设大小,但不能大于 有办法吗??即使是某

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

考虑一下这样的事情

   Name:            Paul
Surname:         Smither  
并且想要自动地

   Name:    Paul
Surname: Smither 
等可以小于预设大小,但不能大于

有办法吗??即使是某些组件,如果不使用Java框架,也无法动态更改元素宽度

引述自:

元素大小

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


您可以阅读以更好地理解更改元素大小的机制

如果它实际上只是数据集中来自同一行的两个字段,那么您可以将它们组合在一起

  • 使用单空格字体
  • 使用设置为N个空格的字符串定义最大字段长度。例如:
    $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}
    
那就是。。。呃。。。有点复杂。而且它只适用于单空间字体。我不敢相信我真的提出了这个。不要这样做。(但它应该会起作用。)