2013-03-18 71 views
2

所以我的程序创建一个MigLayout GUI并包含了许多的创作上给出图像的JLabel。在这里你可以看到最后的结果是什么,现在:MigLayout的JLabel和固定大小

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

的图像是太大了,去了他们包含在JPanel的大小很简单,就是创造它是大小原始图像是,然后显示,但是,这显然是一个问题。有没有一种方法可以修复大小,以便它能够适合GUI中的每个组件?对于初学者,我想确保蓝色部分不会像那样移动,我希望它保持它设置为(一半高度)的大小。我还希望图像在保持原始图像纵横比的情况下占用最大尺寸。

我试过设置JLabel的大小和首选大小,我试着用MigLayout给它一些参数,当我告诉它添加JLabel时,它们都没有为我工作。我很喜欢扩展JLabel并写一些东西来解决它的想法,但并不完全知道如何去做。我知道我可以覆盖油漆,但不知道我真的要做什么。无需额外的参数被添加和创建

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

我的卡只是通过给它们显示的大小的图片:

我的JPanel设定如下。

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

回答

1

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

我发现在Java中,当您创建一个给定某种图像的JLabel时,它将适合JLabel的大小,使其成为您给它的图像的大小。因此,而不是创建一个JLabel给出的原始图像,我缩放首先使用屏幕的尺寸,然后创建一个JLabel出来。

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