Java-更改文本后获取JTextArea的大小

Java-更改文本后获取JTextArea的大小,java,swing,resize,jtextarea,Java,Swing,Resize,Jtextarea,在Java中,除了行和列相乘之外,还有什么方法可以在更改文本后获得JTextArea的首选大小 下面是一个例子: JTextArea a = new JTextArea("sooooooooooooooooooooooooooooooooooo long line"+ "\nfoo\nboo\nbar\nmoo\nso\nlong\ntext"); Dimension p1 = a.getPreferredSize(); Dimension s1 = a.getSize();

在Java中,除了行和列相乘之外,还有什么方法可以在更改文本后获得JTextArea的首选大小

下面是一个例子:

JTextArea a = new JTextArea("sooooooooooooooooooooooooooooooooooo long line"+
        "\nfoo\nboo\nbar\nmoo\nso\nlong\ntext");
Dimension p1 = a.getPreferredSize();
Dimension s1 = a.getSize();

a.append("some\nmore\ntext");
//a.recomputeSize(); I need something like this
Dimension p2 = a.getPreferredSize();
Dimension s2 = a.getSize();

System.out.println(p1); //[width=302,height=128]
System.out.println(s1); //[width=0,height=0]
System.out.println(p2); //[width=302,height=128]
System.out.println(s2); //[width=0,height=0]

当我在Java1.7.0_13中测试时,它起了作用:JTextArea的首选大小立即得到了更新。您的代码是否可能没有在AWT事件调度线程中运行?这是在main方法中,为了简化问题,我甚至没有在任何地方添加此区域,但最后我会尝试一下,问题是最初,我设置了PreferredSize,以便包可以使用,所以我所要做的就是在pack方法之后调用setPreferredSizenull。谢谢:@kajacx你想把你所做的作为一个答案,让其他人看看如何解决吗?@DonyorM不幸的是,我三年前就遇到了这个问题,所以我不记得我是如何解决的。从我的评论中,我记得它可能与pack方法有关?