如何调整图像大小以填充BorderLayout中的Jpanel

时间:2017-02-21 00:44:07

标签: java swing user-interface

我添加了这样的图片

BufferedImage eastFramerPicture = ImageIO.read(new File("src\\Images\\farmer.png"));
        JLabel eastFarmer = new JLabel(new ImageIcon(eastFramerPicture));

但是如何让图像填充面板,提供的图像显示我面临的问题(着色用于指示东,西,中,南的区域)

enter image description here

我做错了什么?如果有什么不清楚请注释,我会回复。

感谢您的时间

3 个答案:

答案 0 :(得分:1)

查看Background Panel。您可以显示图像:

  1. 正常尺寸
  2. 缩放
  3. 瓷砖
  4. 因此,请尝试每个选项以查看您最喜欢的内容。

    或者您也可以使用Stretch Icon。标签中的图标将缩放以填充可用空间。

    两种解决方案都提供可重复使用的代码,因此您无需在每次有此类要求时编写自定义代码。代码也是动态的,并会在调整帧大小时进行调整。

答案 1 :(得分:1)

答案取决于许多因素......

  • 你想保持宽高比吗?
  • 您希望平铺图像以填充区域
  • 如果要保持纵横比,是否要填充或填充可用空间。

简单的解决方案是使用Image#getScaledInstance,但如果你走这条路,你应该读一下The Perils of Image.getScaledInstance

BufferedImage eastFramerPicture = ImageIO.read(getClass().getResource("/Images/farmer.png"));
Image scaled = eastFramerPicture.getScaledInstance(600, 600, Image.SCALE_SMOOTH);

您还可以使用像imgsclr

这样的库

答案 2 :(得分:-1)

尝试使用setBounds(x,y,width,height);