我有一个不可编辑的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);
}
答案 0 :(得分:1)
您可以将JTextArea放在BorderLayout
的北部,例如
contentPane.setLayout(new BorderLayout());
contentPane.add(textArea, BorderLayout.NORTH);
然后它将根据需要使用尽可能多的空间。
注意:如果您需要换行,请不要忘记textArea.setLineWrap(true);
。
答案 1 :(得分:-2)
我会用
desc.setMaximumSize(getPreferredSize());
最小化desc的大小,因为JTextArea的首选大小由行数和列数定义。