Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何设置JTextArea的最大必要大小_Java_Swing_Jtextarea - Fatal编程技术网

Java 如何设置JTextArea的最大必要大小

Java 如何设置JTextArea的最大必要大小,java,swing,jtextarea,Java,Swing,Jtextarea,我有一个不可编辑的区域。我希望这个JTextArea的大小不大于包含它所具有的文本所需的大小。但是,如果我展开包含它的组件,JTextArea也会展开,留下恼人的空白。我没有把它放在JScrollPane中,我不能在这个实例中使用JScrollPane。具有JTextArea的容器正在使用BoxLayout 所以,基本上,我有: _____________________________ |adfadfvfvanalfvnavlavnaklvf| |afdviadanklfvnaflanvlak

我有一个不可编辑的区域。我希望这个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);
}

您可以将JTextArea放在BorderLayout的北部,例如

然后,它将只使用必要的空间

注意:如果需要换行,请不要忘记textArea.setLineWraptrue

我会用

desc.setMaximumSize(getPreferredSize());

要最小化desc的大小,因为JTextArea的首选大小是由行数和列数定义的。

可以包含相关代码吗?另外,您可能要做的是将JTextArea放置在一个JPanel中,然后将该JPanel添加到容器中,这样JPanel的大小将被调整,而不是JTextArea。@MirorredFate,我假设这是一个JFrame?不,这是一个JPanelYeah,这是可行的。我想我会使用north borderlayout将所有内容添加到JPanel中。。。我必须说,我希望JVM真的能优化一切,因为我使用的是类似八进制嵌套的组件。
desc.setMaximumSize(getPreferredSize());