Как автоматически установить минимальную ширину полей по самому длинному тексту в некоторой группе - PullRequest
0 голосов
/ 20 января 2012

Я использую iReport для создания отчетов, и я хотел бы знать, есть ли способ установить ширину «оптически сгруппированных полей». Они должны быть установлены на минимальный размер, который по-прежнему отображает самый длинный текст. У меня есть статический текст на левой стороне и текстовое поле справа от них. Эти текстовые поля имеют ширину 150 и выравнивание по правому краю, но я хотел бы установить меньший размер, чтобы стереть пробелы.

Рассмотрим что-нибудь подобное

   Name:            Paul
Surname:         Smither  

и хотите автоматически

   Name:    Paul
Surname: Smither 

и т.д.. может быть меньше заданного размера, но не больше.

Есть ли способ ?? даже какой-то компонент

Ответы [ 2 ]

0 голосов
/ 21 января 2012

Если на самом деле это просто пара полей из одного ряда в наборе данных, то вы можете взломать что-нибудь вместе.

  • Использовать моноширинный шрифт
  • Определите максимальную длину поля с помощью строки, равной 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}
    

Это ... э-э ... немного сложнее. И это работает только с моноширинными шрифтами. И я не могу поверить, что я действительно предложил это. Не делай этого. (Но это должно сработать.)

0 голосов
/ 20 января 2012

Вы не можете динамически изменять ширину элемента без использования Java-фреймворков.

Цитата из JasperReports Ultimate Guide :

РАЗМЕР ЭЛЕМЕНТА

Атрибуты ширины и высоты являются обязательными и представляют размер элемента отчета в пикселях. Другой элемент растяжения Настройки могут дать указание механизму отчетов игнорировать указанный высота элемента Даже в этом случае атрибуты остаются обязательными поскольку даже когда высота вычисляется динамически, элемент будет не быть меньше, чем первоначально указанная высота.

Вы можете прочитать эту статью для лучшего понимания механизма изменения размера элемента.

...