Я впервые использую любой веб-сайт StackExchange, поэтому давайте посмотрим, как он работает.
Итак, я делал «локальную» программу чата на Java и использовал JTextField для ввода чата. Но я хотел разрешить многострочный чат, поэтому переключился на JTextArea. Я использую GroupLayout (созданный с помощью Window Builder Pro - eclipse) для удобного изменения размеров окон / компонентов. Вот картинка:
JTabbedPane, JTextArea и кнопка «Отправить» все содержатся в JPanel, а все содержимое слева находится в своем собственном JPanel. Итак, у меня есть JTextArea и кнопка, прикрепленная к нижней части правой панели JPanel. JTextArea может изменять размер по вертикали, но кнопка - нет.
Мне удалось заставить JTextArea расти вертикально при вводе новых строк, показанных ниже:
Но я не могу придумать, как, если я введу определенное количество строк в JTextArea, появятся полосы прокрутки, которые не позволят JTextArea занять больше места.
Поэтому я попытался обернуть JTextArea в JScrollPane, но сначала отключил полосы прокрутки, а затем включил их, когда мне понадобилась JTextArea, чтобы начать прокрутку, но я узнал, что если обернуть его, JScrollPane не будет расти, но все равно будет работать так, как если бы полосы прокрутки видны, но ... без них. : /
** Я хотел бы поставить здесь ссылку, но StackOverflow меня не устраивает;)
Итак, я застрял ...
Есть ли что-то, что делает это, что я скучаю?
Я думал, что мог бы просто создать два разных объекта GroupLayout, один с полосой прокрутки, которая даже не действительна, а затем другая с допустимой полосой прокрутки, но застрявшей в определенном размере. На слушателе keyPress я мог проверить, превышает ли текстовая область определенный предел, и тогда это переключило бы расположение для панели? Внутренняя JTextArea все равно будет тем же объектом, но только разными объектами макета. Мнения об этом подходе?
В любом случае, заранее спасибо всем, кто нашел время, чтобы ответить на этот вопрос. :)