Динамическое изменение размера текстовой области в соответствии с содержимым - PullRequest
1 голос
/ 18 марта 2012

Вот текстовая область, которую я добавил в свою программу, используя netbeans.Первое изображение показывает, как выглядит текстовое поле, когда я запускаю программу.На втором изображении показано текстовое поле после нажатия кнопки, которая добавляет около 50 строк «Hello world» в текстовую область - отображаются только первые 6 строк.Мне нужно, чтобы высота текстовой области динамически увеличивалась, чтобы соответствовать всем этим строкам.Кто-нибудь знает, как это сделать?

Редактировать: Я не хочу полосы прокрутки, поэтому использование JScrollPane не вариант.

enter image description here

enter image description here

Ответы [ 3 ]

3 голосов
/ 18 марта 2012

Я бы не использовал JTextArea ни для чего, кроме прототипирования. Он имеет горькую функциональность блокнота. Но это зависит от вас.

Я бы использовал JEditorPane или JTextPane. Я знаю, что вы не можете измерить его в зависимости от размера персонажа, но это к лучшему. Для переноса слов вы можете сделать setContentType ("text / html"); и оберните текст в теги <'p> <' / p>.

(Обратите внимание, что вы все еще используете JScrollPane для прокрутки. Фактически, панель прокрутки работает для любого компонента)

См. Различия: http://docs.oracle.com/javase/tutorial/uiswing/components/editorpane.html

2 голосов
/ 19 марта 2012

Попробуйте это http://java -sl.com / tip_text_height_measuring.html

Я не пробовал его с JTextArea, но предположим, что он должен работать

1 голос
/ 18 марта 2012

Включить JTextArea в JScrollPane

JTextArea textArea = new JTextArea();
JScrollPane scrollArea = new JScrollPane(textArea);

Это будет динамически изменять текстовую область в зависимости от того, нужна прокрутка или нет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...