2

所以我的程序创建了一个 MigLayout GUI,并有一堆 JLabel,它们在创建时给出了图像。在这里您可以看到现在的最终结果:

http://i.imgur.com/evI0sYT.jpg

图像太大,超出了它们所包含的 JPanel 的大小。它只是将其创建为原始图像的大小,然后显示它,但是,这显然是一个问题。有没有办法可以修复大小,以便尝试适合 GUI 中的每个组件?

对于初学者,我想确保蓝色部分不会像那样移动,我希望它保持设置为(高度的一半)的大小。我还希望图像在保持原始图像纵横比的情况下占据最大尺寸。

我已经尝试设置 JLabel 的大小和首选大小,当我告诉它添加 JLabel 时,我尝试了一些尝试使用 MigLayout 给它参数,但都没有为我工作。我正在考虑扩展 JLabel 并编写一些东西来修复它,但不完全确定如何去做。我知道我可以覆盖油漆,但不确定我实际上必须做什么。

我的 JPanel 设置如下:

JPanel jpCards = new JPanel(new MigLayout("insets 0, gapx 0, gapy 0, wrap 7", "grow"));

我的卡片是在没有附加参数的情况下添加的,只是通过给它显示它们的大小的图片来创建。

澄清一下,我需要更改 JLabel 的实际大小,而不仅仅是其中包含的内容,因为它们稍后会有鼠标侦听器。如果只是图像发生了变化,我会遇到鼠标侦听器在 JLabel 中检测到自己的问题,它看起来不应该

4

1 回答 1

1

我通过在制作 JLabel 之前更改图标的大小来解决这个问题。

我发现在 Java 中,当您创建一个给定某种图像的 JLabel 时,它将适合 JLabel 的大小,以成为您给它的图像的大小。因此,我没有在给定原始图像的情况下创建 JLabel,而是首先使用屏幕的尺寸对其进行缩放,然后从中创建一个 JLabel。

由于我希望用户能够调整屏幕大小并调整图像大小,因此还有一些工作要做。我将不得不花一些时间来弄清楚如何让它调整大小,但这不是一个主要问题。

于 2013-03-26T20:11:58.740 回答