Во всех примерах, которые я могу найти, которые используют JTextArea
, высота и ширина известны до построения JTextArea
], и если JTextArea
потребует большей высоты, то он помещается внутри JScrollPane
. Очевидно, высота JTextArea
зависит от ширины и содержимого текста.
Теперь моя ситуация требует, чтобы я не использовал JScrollPane
, а вместо этого JTextArea
был достаточно высоким, чтобы отображать весь текст. Когда я создаю JTextArea
, я знаю текстовое содержимое и ширину, с которой он должен работать; Я не знаю высоты - я хочу, чтобы она была как можно меньше, без обрезания текста. Это кажется очень трудным для выполнения.
В качестве примечания, JTextArea
будет добавлен в JPanel
, в котором нет диспетчера компоновки - он использует абсолютное позиционирование на основе предпочтительный размер добавленного компонента. Для этого требуется, чтобы моя JTextArea
возвращала правильные размеры на getPreferredSize ()
. Правильными размерами должны быть ширина, которую я указал при создании, и минимальная высота, необходимая для отображения всего текста с указанной шириной.
Я нашел несколько похожих тем, в которых обсуждаются странности / ошибки, связанные с JTextArea
, которые иногда решаются путем двойного вызова pack ()
в родительском контейнере. Для меня это не вариант. У меня есть соблазн создать свой собственный JTextArea
, который принимает ширину и строку и вычисляет необходимую минимальную высоту на основе настроек ширины и шрифта, но я решил, что сначала поспрашиваю, прежде чем тратить время на это.
Надеюсь, мой вопрос ясен. Спасибо всем за помощь!