如何阻止wordwrapped-JTextArea调整大小以适应大内容?

时间:2010-10-28 17:07:49

标签: java swing jtextarea

我目前有一个wordwrapped-JTextArea作为聊天程序的用户输入窗口。如何使JTextArea不调整大小以自动适合大文本?我已经将JTextArea设置为2行:

user_input = new JTextArea();
user_input.addAncestorListener(new RequestFocusListener());
user_input.setRows(2);
user_input.setLineWrap(true);
user_input.setWrapStyleWord(true);

3 个答案:

答案 0 :(得分:6)

您应该将JTextArea放在JScrollPane中。这将保持行大小不变,并且具有允许用户导航输入的额外好处。如果需要,可以将滚动窗格设置为从不显示。您仍然可以依靠JTextArea组件来计算行的高度,然后计算组件的首选高度。

setRows的调用用于指示显示屏上可见的行数,是一个可以与JScrollPane一起使用的属性,如JTextArea JavaDoc中所述:< / p>

  

java.awt.TextArea有两个属性 rows * ,以及用于确定首选大小的列。当放置在JScrollPane中以匹配java.awt.TextArea提供的功能时,JTextArea使用这些属性来指示视口的首选大小。 JTextArea具有显示所有文本所需内容的首选大小,以便它在JScrollPane内正常运行。

*我的重点

答案 1 :(得分:4)

使用setPreferredSize(new Dimension(...)),以便JTextArea保留您设置的尺寸。

答案 2 :(得分:2)

这是您正在使用的布局管理器的功能,但您可以尝试通过在文本区域设置setPreferredSize()setMaximusSize()来强制它。

请参阅JComponent的文档。