Как установить максимальный необходимый размер JTextArea - PullRequest
1 голос
/ 14 июля 2011

У меня есть не редактируемый JTextArea.Я хочу, чтобы размер этого JTextArea был не больше, чем нужно, чтобы содержать текст, который у него есть.Однако, если я разверну компонент, содержащий его, JTextArea также расширится, оставляя раздражающее пустое пространство.Я не помещаю это в JScrollPane (я не могу использовать JScrollPane в этом случае).Контейнер с JTextArea использует BoxLayout.

Итак, в основном, у меня есть это:

_____________________________
|adfadfvfvanalfvnavlavnaklvf|
|afdviadanklfvnaflanvlakdnfv|
|efvavsavasv                |
|                           |
|___________________________|

И я хочу это:

_____________________________
|adfadfvfvanalfvnavlavnaklvf|
|afdviadanklfvnaflanvlakdnfv|
|efvavsavasv________________|

СООТВЕТСТВУЮЩИЙ КОД:

private void initializeAllComponents(){
    this.setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS));

    this.setHeader();
    this.add(header);

    this.setDescription();//This is the JTextArea
    this.add(desc);

    this.setBody();
    this.add(body);

    this.setFooters();
}

private void setDescription(){
    desc = new JTextArea(skill.getDesc());
    desc.setFont(new Font("URW Chancery L", Font.ITALIC, 16));
    desc.setBackground(new Color(218, 217, 199));
    desc.setEditable(false);
    desc.setLineWrap(true);
    desc.setWrapStyleWord(true);
}

Ответы [ 2 ]

1 голос
/ 14 июля 2011

Вы можете просто поместить JTextArea в северную часть BorderLayout, например,

contentPane.setLayout(new BorderLayout());
contentPane.add(textArea, BorderLayout.NORTH);

Тогда он будет использовать столько места, сколько необходимо.

Примечание: если вам нужна перенос строки, не забудьте textArea.setLineWrap(true);.

0 голосов
/ 18 января 2012

Я бы использовал

desc.setMaximumSize(getPreferredSize());

для минимизации размера desc, так как предпочтительный размер JTextArea определяется количеством строк и столбцов.

...