【问题标题】:JLabel Width Independent from Text LengthJLabel 宽度与文本长度无关
【发布时间】:2011-01-15 17:06:03
【问题描述】:

我在水平可调整大小的 JPanel 中有一个 JLabel。 JLabel 自动调整其宽度以适合 JPanel。如果我插入一长行文本(例如“aaaaaaaaaaaaaaaaaaaaaa”),JLabel 不会截断文本。相反,宽度会重新调整大小以适合文本,这也会导致 JPanel 的大小调整变得难看。

相反,我希望我的文本用省略号 (...) 截断。 JLabel 宽度不能继承自文本的长度,而只能继承自 JPanel 宽度。

【问题讨论】:

  • 包含 JPanel 使用什么布局?如果只是默认的 FlowLayout,请考虑尝试其他布局,例如 BorderLayout 或 BoxLayout。
  • 我用的是GroupLayout,我觉得不是布局问题
  • 你100%确定吗?我不敢苟同,因为根据我的经验,这是关键问题。您是否非常了解 GroupLayout 以及其他布局管理器,因为这些知识本质上是为了能够进行此调用。
  • 我赞同 jzd 发布 SSCCE 的建议。你可以在这里阅读:sscce.org
  • 我试图创建一个 SSCCE,但它非常复杂......这是一个复杂的项目 :( 问题的视频有用吗?

标签: java text jpanel long-integer jlabel


【解决方案1】:

尝试以下操作:

final JLabel label = ...
...
label.setText("prototype text to define size");
final Dimension size = label.getPreferredSize();
label.setMinimumSize(size);
label.setPreferredSize(size);
...
label.setText(...);

【讨论】:

    【解决方案2】:

    使用不同的布局或在 JLabel 上设置最大尺寸。

    【讨论】:

    • 我需要该布局(GroupLayout),我不想在 jlabel 上设置最大尺寸,因为我希望他的宽度与 jpanel 相同(jpanel 可调整大小)
    • 在这种情况下,您可以发布 SSCCE 吗?
    【解决方案3】:

    您需要在定义最大和首选大小时禁用“水平调整大小”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-26
      • 1970-01-01
      • 1970-01-01
      • 2015-06-01
      • 2011-04-01
      • 1970-01-01
      相关资源
      最近更新 更多