2014-10-30 93 views
1

我希望我不会错过一些重复的问题,我觉得这应该是微不足道的!Swing JTextArea:在自动换行后调整对话框的大小

无论如何,我有一个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文件接收文本,并且在包装后它可以在0到大约30行之间变化。我有垂直空间可以显示所有内容,但我不想滚动或在没有或仅显示一小段文字的情况下显示巨大的白色区域。


编辑2:

改写的问题,他们关键我面临显然没有调整的JTextArea中的问题,而是要确保之后的对话框知道它有多大!

所以,这里是链接回我结束了使用的解决方案:An automatic resizing Text above a button?

回答

2

您需要JScrollPaneJTeatArea像未来new JScrollPane(area);,然后添加JScrollPaneJFrame

另外,您还创建了带空构造函数的JTextArea,使用JTextArea(int rows, int cols)指定行和列的计数。

+0

我可能会在这里丢失一些信息,但滚动窗格使区域可以滚动,它不会调整任何大小。 – Layna 2014-10-30 10:53:36

+0

但是在创作上,我还不知道线条的数量......它随着情况而变化。 *去编辑她的问题* – Layna 2014-10-30 10:55:45