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

Fra*_*ick 4 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);
Run Code Online (Sandbox Code Playgroud)

akf*_*akf 6

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

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

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

*我的重点


Jac*_*ack 4

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