я впервые использую какой-либо веб-сайт 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 по-прежнему будет тем же объектом, но просто другими объектами макета. Мнения о таком подходе?
В любом случае, заранее спасибо всем, кто нашел время, чтобы ответить на этот вопрос. :)