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

Java 如何阻止wordwrapped JTextArea调整大小以适应大型内容?,java,swing,jtextarea,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.setWrapSt

我目前有一个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);

使用
setPreferredSize(新维度(…)
,以便
JTextArea
将保留您设置的维度。

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


有关详细信息,请参阅文档

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

调用
setRows
(用于指示显示器上可见的行数)是一个属性,它是为使用
JScrollPane
而维护的,如中所述:

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

*我的重点