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