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这样的库


    我尝试了eastGrass.setBounds(east.getLocation().x,center.getLocation().y,center.getWidth(),center.getHeight());但它不起作用,有什么想法吗?public usersMenu(){con=MySQLConnect.ConnectDB();initComponents();fillList();jPanel1.setIcon(新的javax.swing.ImageIcon(getClass().getResource(“/images/muis.jpg”));setresizeable(false);Dimension dm=Toolkit.getDefaultToolkit().getScreenSize()后置边界(0,0,dm.宽度,dm.高度);jPanel1.后置边界(0,0,dm.宽度,dm.高度);集合标题(“ММБГСЛЛСбСбСбЙСбСбббббббСбббббббббббббббббб1073是否要保持图像的纵横比?比如说什么?甚至我只是想让图像填充面板(在图像中提供东面(即草应该填充整个绿色区域)。我不介意它被拉伸。因此,不要引用
    src
    路径,当项目打包时它将不存在。在
    src
    包中包含的资源中,很可能嵌入到生成的jar文件中,使其无法作为
    文件访问,您将需要使用
    类#getResource
    这是链接,但对我来说很复杂你不会有一个不“复杂”的解决方案由于默认API不能满足您的需要。您唯一的解决方案是采用自定义绘制路线,这意味着您将遇到缩放质量问题。另一个解决方案是使用图像标题,而不是标题。您可以给出一个如何使用拉伸类的示例吗?我将图像传递给它,但它什么也没做
    BufferedImage eastFramerPicture = ImageIO.read(getClass().getResource("/Images/farmer.png"));
    Image scaled = eastFramerPicture.getScaledInstance(600, 600, Image.SCALE_SMOOTH);