我希望我没有错过一些重复的问题,我觉得这应该是微不足道的!
无论如何,我有一个带有文字的JTextArea
,带有自动换行符:
public PleaseResize(){
super();
Container cp = this.getContentPane();
JTextArea area = new JTextArea();
area.setColumns(20);
area.setLineWrap(true);
area.setEditable(false);
area.setWrapStyleWord(true);
area.setText("Once upon a midnight dreary, while I pondered, weak and weary, over many a quaint an curious volume of forgotten lore.");
cp.add(area, BorderLayout.CENTER);
cp.add(new JButton("Hallo"), BorderLayout.SOUTH);
this.pack();
}
我希望文本区域垂直调整大小以显示整个文本...但它不会。如果我通过推入\n
选择换行符,它会很快乐地调整大小,但是使用自动换行,它仍然是它的大小。
我觉得我错过了一些非常明显的东西......
修改以澄清:
在创建时,我不知道文本将有多少行(由于自动换行发生)。我通过XML文件接收Text,并且在换行后它可以在0到30行之间变化。我有垂直空间来显示所有内容,但是当没有或只显示一些文本时,我不想滚动或有一个巨大的白色区域。
编辑2:
在重新提问之后,他们面临的问题的关键显然是没有调整JTextArea的大小,但确保对话框知道它有多大!
所以,这里是我最终使用的解决方案的链接:An automatic resizing Text above a button?
答案 0 :(得分:2)
您需要将JTeatArea
与JScrollPane
一起包裹,如下一个new JScrollPane(area);
,然后将JScrollPane
添加到JFrame
。
您还使用空构造函数创建JTextArea
,使用JTextArea(int rows, int cols)
指定行数和列数。