我目前有一个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);
答案 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的文档。