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