Как я могу создать JTextArea с указанной шириной и минимально возможной высотой, необходимой для отображения всего текста?

Во всех примерах, которые я могу найти, которые используют JTextArea , высота и ширина известны до построения JTextArea ], и если JTextArea потребует большей высоты, то он помещается внутри JScrollPane . Очевидно, высота JTextArea зависит от ширины и содержимого текста.

Теперь моя ситуация требует, чтобы я не использовал JScrollPane , а вместо этого JTextArea был достаточно высоким, чтобы отображать весь текст. Когда я создаю JTextArea , я знаю текстовое содержимое и ширину, с которой он должен работать; Я не знаю высоты - я хочу, чтобы она была как можно меньше, без обрезания текста. Это кажется очень трудным для выполнения.

В качестве примечания, JTextArea будет добавлен в JPanel , в котором нет диспетчера компоновки - он использует абсолютное позиционирование на основе предпочтительный размер добавленного компонента. Для этого требуется, чтобы моя JTextArea возвращала правильные размеры на getPreferredSize () . Правильными размерами должны быть ширина, которую я указал при создании, и минимальная высота, необходимая для отображения всего текста с указанной шириной.

Я нашел несколько похожих тем, в которых обсуждаются странности / ошибки, связанные с JTextArea , которые иногда решаются путем двойного вызова pack () в родительском контейнере. Для меня это не вариант. У меня есть соблазн создать свой собственный JTextArea , который принимает ширину и строку и вычисляет необходимую минимальную высоту на основе настроек ширины и шрифта, но я решил, что сначала поспрашиваю, прежде чем тратить время на это.

Надеюсь, мой вопрос ясен. Спасибо всем за помощь!

12
задан Nate W. 3 November 2010 в 00:36
поделиться