自动调整JTextArea的大小

时间:2010-04-08 15:14:55

标签: java jtextarea autoresize

我希望我的JTextArea在达到最后一行(文本区域的高度可以提供)并且用户想要开始新行时自行调整大小(垂直扩展)。你知道,就像MSWord中的文本框一样。

我有一个想法是使用getLineCount()并确定(如果需要)JTextArea的新高度。你有或者知道更好的方法来实现这个吗?

4 个答案:

答案 0 :(得分:9)

实际上,JTextArea始终具有正确的大小,因此所有文本行都是可见的。您所经历的可能是您将文本区域包裹在JScrollPane中。只需省略滚动窗格并使文本区域成为容器的直接子项。

另一种解决方案是侦听文本区域的调整大小事件并相应地调整滚动窗格的大小。这样,您可以增长到一定的大小,然后开始显示滚动条(例如,当有人将500KB的文本粘贴到文本区域时)。

答案 1 :(得分:1)

我遇到了同样的问题。从我的测试中,我不相信JTextArea动态设置它的大小。相反,它的大小似乎受到容器的限制(在我的情况下是JPanel)。但是,JTextArea会根据其包含的文本更改其首选大小。来自文档:

  

java.awt.TextArea有两个属性行和列,用于确定首选大小。当放置在JScrollPane中以匹配java.awt.TextArea提供的功能时,JTextArea使用这些属性来指示视口的首选大小。 JTextArea具有显示所有文本所需的大小,因此它在JScrollPane内部正常运行。如果行或列的值等于零,则沿该轴的首选大小将用于沿同一轴的视口首选大小。

答案 2 :(得分:0)

我有同样的问题,我将JTextArea放入JScrollPane并设置JTextArea的首选大小,我相信这是问题的原因。

所以正确的解决方案是将JTextArea放入JScrollPane,并且不要触及JTextArea的首选大小,而是设置JScrollPane。

答案 3 :(得分:0)

转到JTextArea“ 属性”-清单“ lineWrap ”。