所以我的程序创建了一个MigLayout GUI并且有一堆JLabel在创建时给出了图像。在这里,您可以看到最终结果:
图像太大,超出了它们所包含的JPanel的大小。它只是将其创建为原始图像的大小然后显示,但是,这显然是一个问题。有没有办法我可以修改大小,以便它会尝试适应GUI中的每个组件?
对于初学者,我想确保蓝色部分不会像那样移动,我希望它保持其设置的大小(高度的一半)。我还希望图像能够保持原始图像的纵横比,从而占用最大尺寸。
我已经尝试设置JLabel的大小和首选大小,我尝试使用MigLayout进行一些尝试,当我告诉它添加JLabel时,它给了它参数,对我来说都没有。我很乐意扩展JLabel并写一些东西来修复它,但不完全确定如何去做。我知道我可以覆盖油漆,但不知道我必须要做什么。
我的JPanel设置如下:
JPanel jpCards = new JPanel(new MigLayout("insets 0, gapx 0, gapy 0, wrap 7", "grow"));
我的卡片在没有附加参数的情况下被添加,只是通过给出它们显示尺寸的图片来创建。
为了澄清,我需要更改实际的JLabel大小,而不仅仅是内部包含的内容,因为它们稍后会有鼠标监听器。如果只改变了图像,我会遇到鼠标监听器在JLabel内部检测到它看起来不像它应该
的问题。答案 0 :(得分:1)
我在制作JLabel之前通过改变图标的大小来解决这个问题。
我发现在Java中,当你创建一个给出某种图像的JLabel时,它会使JLabel的大小适合你给它的图像。因此,不是在给定原始图像的情况下创建JLabel,而是首先使用屏幕的尺寸对其进行缩放,然后从中创建JLabel。
由于我希望用户能够调整屏幕大小并调整图像大小,因此还有一些工作要做。我将不得不花一些时间来弄清楚如何调整大小,但这不是一个主要的问题。