Авто-изменение размера JTextArea - PullRequest
3 голосов
/ 08 апреля 2010

Я хочу, чтобы моя JTextArea изменяла свой размер (расширялась по вертикали), когда достигнута последняя строка (которую может предложить высота текстовой области), и пользователь хочет начать новую строку. Вы знаете, как текстовое поле в MSWord.

У меня есть идея использовать getLineCount() и определить (при необходимости) новую высоту JTextArea. У вас есть или вы знаете лучшие подходы для реализации этого?

Ответы [ 4 ]

9 голосов
/ 08 апреля 2010

На самом деле, JTextArea всегда имеет правильный размер, поэтому все строки текста видны. Вероятно, вы заключили текстовую область в JScrollPane. Просто опустите панель прокрутки и сделайте текстовую область прямым потомком контейнера.

Другим решением является прослушивание событий изменения размера текстовой области и соответствующего размера области прокрутки. Таким образом, вы можете увеличиться до определенного размера, а затем начать отображать полосы прокрутки (например, когда кто-то вставляет 500КБ текста в текстовую область).

1 голос
/ 27 декабря 2012

У меня была такая же проблема. Из моих тестов я не верю, что JTextArea устанавливает свой размер динамически. Вместо этого его размер ограничен контейнером (в моем случае это JPanel). Однако JTextArea меняет свой предпочтительный размер в зависимости от содержащегося в нем текста. Из документации:

java.awt.TextArea имеет два свойства строк и столбцов, которые используются для определения предпочтительного размера. JTextArea использует эти свойства, чтобы указать предпочтительный размер области просмотра при помещении в JScrollPane для соответствия функциональности, предоставляемой java.awt.TextArea. JTextArea имеет предпочтительный размер, необходимый для отображения всего текста, чтобы он правильно функционировал внутри JScrollPane. Если значение для строк или столбцов равно нулю, предпочтительный размер вдоль этой оси используется для предпочтительного размера области просмотра вдоль той же оси.

0 голосов
/ 25 июня 2018

Перейти к JTextArea " Свойства " - контрольный список " lineWrap ".

0 голосов
/ 07 марта 2016

У меня была та же проблема , Я поместил JTextArea в JScrollPane и установил предпочтительный размер JTextArea, и я считаю, что это является причиной проблемы.

Таким образом, правильное решение - поместить JTextArea в JScrollPane, и не трогать предпочтительный размер JTextArea, установите вместо него JScrollPane.

...