【问题标题】:Resizing JLabel smaller than its icon?将 JLabel 的大小调整为小于其图标?
【发布时间】:2011-05-07 18:01:57
【问题描述】:

我正在使用一个 JPanel,其中包含一个带有图标的 JLabel。当 JLabel 被调整大小时,我在 JLabel 上使用 ComponentAdapter 从控制器请求正确大小的缩略图(使用 MVC 模式)。当 JLabel 的大小调整为比以前更大时,这可以正常工作,因此它会填充 JLabel 大小的 ImageIcon。但是,当将窗口调整为更小时,它根本不会调整 JLabel 的大小(我假设是因为图标的大小)。

是否可能有一些布局管理器或设置使 JLabel 忽略其内容(ImageIcon)并调整自身大小?我的意思是,它可以截断文本,所以它应该能够在缩小尺寸时只显示图像的一部分。

【问题讨论】:

  • 你玩过JLabel.setMinimumSize()吗?
  • 如需尽快获得更好的帮助,请发帖SSCCE
  • @Bala R -1 用于宣传 setXXSize 的用法之一 ;-)
  • 图标大小没有特殊的权重 - 截断文本的 LayoutManager 已经不尊重组件的最小值,也应该削减图标

标签: java swing jlabel


【解决方案1】:

尝试使用setPreferredSize()setMinimumSize() 进行试验,以确保JLabel 允许自身缩小到所需的大小。您还需要仔细检查您正在使用哪种类型的LayoutManager,以及在将组件添加到面板时使用的约束(如果有)。如果可以,请尝试使用不同的布局管理器。如果这些都不起作用,您需要提供一些示例代码。

【讨论】:

  • -1 用于促进使用任何 setXXSize。这在这里甚至没有帮助-答案的第一部分是完全错误的。疯狂的猜测很少有帮助;-)
  • 好吧,随便。请原谅我在 OP 没有提供示例程序的情况下提出的一些可能适用于或可能不适用于 OP 的建议。在他们这样做之前,你没有证据表明它不起作用。如果组件是 JLabel 的子类,而 setXXSize 的实现不正确,那么它确实可能是问题所在。
  • 我们说的是 JLabel - 它的 min/pref size 的实现是众所周知的,无需实验也无需猜测,只需查找即可。
  • 这似乎是问题所在。奇怪的是,JLabel 的最小尺寸在创建时设置为 0x0,但是在设置图标后使用 0x0 调用 setMinimumSize() 解决了它。
  • 哇...我真的很惊讶它实际上产生了效果,尤其是在将其设置为与以前相同的值时。你有没有同时改变什么?可能只是调用setMinimumSize() 触发了布局的重新验证,因此调用revalidate() 可能具有相同的效果。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-06
  • 1970-01-01
  • 2014-08-03
  • 2012-09-23
  • 2020-11-30
  • 2021-07-20
相关资源
最近更新 更多