代码之家  ›  专栏  ›  技术社区  ›  Halo

自动调整jTextArea的大小

  •  3
  • Halo  · 技术社区  · 15 年前

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

    我有个主意要用 getLineCount() 并确定(如有必要)JTextArea的新高度。您是否有或知道更好的方法来实现这一点?

    4 回复  |  直到 6 年前
        1
  •  9
  •   Aaron Digulla    15 年前

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

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

        2
  •  1
  •   Hillary Ryan    12 年前

    我也有同样的问题。从我的测试中,我不相信jTextArea会动态地设置其大小。相反,它的大小似乎受到其容器的限制(在我的例子中是一个jpanel)。但是,jTextArea确实会根据其包含的文本更改其首选大小。从文档中:

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

        3
  •  0
  •   Gentleman Meow    9 年前

    我也有同样的问题,我把jTextArea放在jscrollPane中,设置了jTextArea的首选大小,我认为这就是问题的原因。

    因此,正确的解决方案是将jTextArea放到jscrollPane中,不要触摸jTextArea的首选大小,而是设置jscrollPane。

        4
  •  0
  •   Arvy Dharmmaparayaandhika    6 年前

    转到JTextArea“ 性质 “检查表” 线型包装 “。