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

发布于 09-30 03:40 字数 299 浏览 3 评论 0原文

我目前有一个自动换行的 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);

I currently have a wordwrapped-JTextArea as a user input window for a chat program. How do I make it so the JTextArea doesn't resize to automatically fit large text? I have already set the JTextArea to be 2 rows:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

冷月断魂刀2024-10-07 03:40:22

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

setRows 的调用用于指示显示屏上可见的行数,该属性是为了与 JScrollPane 一起使用而维护的,如 JTextArea JavaDoc

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

*我的重点

You should put your JTextArea in a JScrollPane. This will keep your row size intact, and would have the added benefit of allowing the user to navigate the input. If you want, you can set the scrollpane to never show. You can still rely on the JTextArea component to calculate the height of the rows and then the preferred height of the component.

The call to setRows that you use to indicate the amount of rows visible on your display is a property that is maintained to work with JScrollPane, as described in the JTextArea JavaDoc:

java.awt.TextArea has two properties rows* and columns that are used to determine the preferred size. JTextArea uses these properties to indicate the preferred size of the viewport when placed inside a JScrollPane to match the functionality provided by java.awt.TextArea. JTextArea has a preferred size of what is needed to display all of the text, so that it functions properly inside of a JScrollPane.

*my emphasis

不羁少年2024-10-07 03:40:22

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

Use setPreferredSize(new Dimension(...)) so that the JTextArea will keep the dimension you set.,

风筝有风,海豚有海2024-10-07 03:40:22

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

请参阅文档 JComponent

It's a function of the layout manager you're using, but you can try to force it by setting setPreferredSize() and setMaximusSize() on your text area.

See the docs for JComponent.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文