Java 如何调整图像大小以填充BorderLayout中的Jpanel
我添加了一个这样的图像Java 如何调整图像大小以填充BorderLayout中的Jpanel,java,swing,user-interface,Java,Swing,User Interface,我添加了一个这样的图像 BufferedImage eastFramerPicture = ImageIO.read(new File("src\\Images\\farmer.png")); JLabel eastFarmer = new JLabel(new ImageIcon(eastFramerPicture)); 但是我怎样才能使图像充满面板,提供的图像显示了我面临的问题(颜色用于表示东、西、中、南地区) 我做错了什么?如果有不清楚的地方请评论出来,我会回复的 感谢
BufferedImage eastFramerPicture = ImageIO.read(new File("src\\Images\\farmer.png"));
JLabel eastFarmer = new JLabel(new ImageIcon(eastFramerPicture));
但是我怎样才能使图像充满面板,提供的图像显示了我面临的问题(颜色用于表示东、西、中、南地区)
我做错了什么?如果有不清楚的地方请评论出来,我会回复的
感谢您抽出时间尝试使用收进边界(x、y、宽度、高度) 查看下面的链接。您可以显示图像:
这两种解决方案都提供了可重用的代码,因此您不需要每次都编写自定义代码。代码也是动态的,并将随着帧大小的调整而调整。答案将取决于许多因素
- 您想保持纵横比吗
- 是否要平铺图像以填充该区域
- 如果要保持纵横比,是否要调整或填充可用空间
Image#getScaledInstance
,但如果你这样做,你应该对
您还可以使用像imgsclr这样的库
src
路径,当项目打包时它将不存在。在src
包中包含的资源中,很可能嵌入到生成的jar文件中,使其无法作为文件访问,您将需要使用类#getResource
这是链接,但对我来说很复杂你不会有一个不“复杂”的解决方案由于默认API不能满足您的需要。您唯一的解决方案是采用自定义绘制路线,这意味着您将遇到缩放质量问题。另一个解决方案是使用图像标题,而不是标题。您可以给出一个如何使用拉伸类的示例吗?我将图像传递给它,但它什么也没做
BufferedImage eastFramerPicture = ImageIO.read(getClass().getResource("/Images/farmer.png"));
Image scaled = eastFramerPicture.getScaledInstance(600, 600, Image.SCALE_SMOOTH);