gpt4 book ai didi

java - 如何根据可用空间制作 JLabel 的文本换行?

转载 作者:行者123 更新时间:2023-12-01 18:11:29 31 4
gpt4 key购买 nike

该网站上已经有几个问题询问如何制作 JLabel 换行文本。我已经读过它们,并且没有问(完全)相同的问题。所以放慢你的“标记为重复”锤子的速度。

其他问题已通过以下任一方式解决了 JLabel-wrap-text 问题

  1. 使用 HTML 标记使文本换行至指定长度,或
  2. 使用 JTextArea 代替具有换行属性的 JLabel

我对这两种方法的问题是它们具有固定的宽度。首先,您必须在 html 中指定宽度或在 JLabel 上设置最大尺寸。在第二种情况下,您必须在 JTextArea 上设置首选大小,如果不这样做,它将使用默认大小。

是否有一种方法可以使 JLabel 文本仅在受容器大小限制时换行? 基本上,这样做的目标是让布局管理器处理宽度限制并强制包裹。这意味着调整大小的窗口可能会更改标签内的文本 - 随着可用空间增加,换行导致的行数减少,而可用空间减少,换行的行数增多。

我更喜欢至少自动换行的解决方案。如果您的解决方案也可以仅按字符换行,则为您加分。

最佳答案

. In the second, you have to set a preferred size on the JTextArea, and if you don't, it comes with a default size.

您通常会指定文本区域的行/列,以便文本区域可以确定框架压缩时要使用的首选大小。

但是,如果您使用能够调整文本区域宽度大小的布局管理器,则宽度将根据可用空间进行计算。

例如,BorderLayout.PAGE_START 将始终填充宽度。 GridBagLayout还支持填充单元格中组件的宽度。

因此,具有适当布局管理器的文本区域应该可以解决您的问题。

If your solution can also just wrap by characters, brownie points for you.

JTextArea 还支持字符换行。

关于java - 如何根据可用空间制作 JLabel 的文本换行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32685976/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com