【问题标题】:How do I make a JLabel's text wrap based on available space?如何根据可用空间制作 JLabel 的文本换行?
【发布时间】:2015-09-21 01:11:11
【问题描述】:

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

其他问题已经解决了 JLabel-wrap-text 问题

  1. 使用 HTML 标签使文本换行到指定的长度,或者
  2. 使用JTextArea 代替JLabel,后者具有包装属性。

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

有没有一种方法可以让 JLabel 文本仅在受其容器大小限制时换行? 基本上,这样做的目的是让布局管理器处理限制和强制换行的宽度.这意味着调整大小的窗口可能会更改标签中的文本 - 随着更多空间变得可用,由于换行而产生的行数越少,并且随着可用空间越少,被换行的行越多。

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

【问题讨论】:

  • 未来,使用更好的标签关键字通常会更快地为您提供答案。我只是偶然发生在这个问题上。我添加了“java,swing”。

标签: java swing jlabel layout-manager word-wrap


【解决方案1】:

。其次,你必须在 JTextArea 上设置一个首选大小,如果你不这样做,它会带有一个默认大小。

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

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

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

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

如果您的解决方案也可以仅按字符换行,请给您加分。

JTextArea 也支持字符换行。

【讨论】:

    猜你喜欢
    • 2018-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-14
    • 2020-12-25
    • 1970-01-01
    相关资源
    最近更新 更多