Автоматическое изменение высоты JTextArea

Ширина всех компонентов одинакова. У меня есть JPanel (макет коробки; PAGE_AXIS). Я добавил на него Box.filler, который имеет следующие характеристики:

Минимальный размер (высота) -1

Предпочтительный размер (высота) Высота JPanel

Максимальный размер (высота) Высота JPanel

Я добавил JTextArea с границей толщиной 7 пикселей (только ниже).

Когда я набираю текст, JTextArea расширяется, но недостаточно, и через пару строк текст выходит за границы (его больше не видно).

Я могу определить, сколько существует строк текста (используя FontMetrics), и я могу соответствующим образом принудительно установить setSize, но на самом деле ничего не меняется. Распечатка JTextArea.getHeight() показывает, что размер изменился на моих условиях, но визуально он остается таким, как если бы это было не так. И я не забыл проверить и перекрасить.

Как я могу заставить JTextArea изменить размер до определенного размера?


person Karlovsky120    schedule 27.08.2012    source источник
comment
1) Какой у вас вопрос? 2) Чтобы быстрее получить помощь, опубликуйте SSCCE. 3) Вместо этого вы можете использовать многострочную (в формате HTML) метку.   -  person Andrew Thompson    schedule 27.08.2012


Ответы (2)


В качестве альтернативы вы могли бы просто сделать перенос слов JTextArea?:

JTextArea.setWrapStyleWord(true);

вы также можете попробовать установить количество строк, используя setRows(int rows), а затем revalidate() и repaint()

person David Kroukamp    schedule 27.08.2012
comment
Карловский пишет о строках, а не столбцах, которые выходят за рамки. - person Stefan Neubert; 27.08.2012
comment
@StefanNeubert правда, см. сообщение edietd - person David Kroukamp; 27.08.2012

Вы можете поместить JTextArea в JScrollPane, чтобы дополнительные строки оставались видимыми, не изменяя пространство, необходимое JTextArea на экране.

Дополнительную информацию см. в учебнике Oracle по как использовать области прокрутки. .

person Stefan Neubert    schedule 27.08.2012