4

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

3 回答 3

6

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

setRows用于指示显示器上可见的行数的调用是一个被维护以使用的属性JScrollPane,如JTextAreaJavaDoc中所述:

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

*我的重点

于 2010-10-28T17:17:18.633 回答
4

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

于 2010-10-28T17:12:12.030 回答
2

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

请参阅JComponent的文档。

于 2010-10-28T17:13:10.320 回答