Включение полос прокрутки, когда JTextArea превышает определенное количество строк

я впервые использую какой-либо веб-сайт StackExchange, так что давайте посмотрим, как это пойдет.

Итак, я делал «локальную» программу чата на Java и использовал JTextField для ввода чата. Но я хотел разрешить многострочный чат, поэтому я переключился на JTextArea. Я использую GroupLayout (созданный с помощью Window Builder Pro - eclipse) для легкого изменения размера окна / компонента. Вот изображение:

enter image description here

JTabbedPane, JTextArea и кнопка «Отправить» содержатся в JPanel, а все, что находится слева, находится в его собственном JPanel. Итак, у меня есть JTextArea и кнопка, прикрепленная к нижней части правой панели JPanel. JTextArea может изменять размер по вертикали, а кнопка - нет.Мне удалось заставить JTextArea расти вертикально, когда я ввожу новые строки, как показано ниже:

enter image description here

Но я не могу придумать способ, чтобы, если я введу определенное количество строк в JTextArea, появятся полосы прокрутки и не позволять JTextArea занимать больше места. Итак, я попытался обернуть JTextArea в JScrollPane, но сначала отключил полосы прокрутки, а затем включил их, когда мне нужно было JTextArea для начала прокрутки, но я узнал, что если я его заверну, JScrollPane не будет расти, но все равно будет действовать так, как будто бы с полосы прокрутки видны, но ... без них. : /

** Я хотел разместить здесь ссылку, но StackOverflow меня не любит;)

Итак, я как бы застрял ... Есть что-то, что делает это, что мне не хватает? Я думал, что могу просто создать два разных объекта GroupLayout, один с недействительной полосой прокрутки, а другой с действующей полосой прокрутки, но застрявшей в определенном размере. В прослушивателе keyPress я мог проверить, превышает ли текстовая область определенный предел, а затем он переключит макет для панели? Внутренний JTextArea по-прежнему будет тем же объектом, но просто другими объектами макета. Мнения о таком подходе?

В любом случае, заранее спасибо всем, кто нашел время, чтобы ответить на этот вопрос. :)

5
задан mKorbel 21 February 2012 в 07:59
поделиться