繁体   English   中英

调整图像大小,使其适合JPanel网格

[英]Resize image so that it fits JPanel grid

我有一个JPanel具有(5,7),5行,7列的网格布局。

当我尝试将图像添加到网格面板时

    Img = new ImageIcon("ImagePath");
    JLabel Label = new JLabel(Img);
    add(picLabel);

对于我的网格面板来说,图像似乎太大了,而网格面板上只显示了一小部分图像。

如何将图像添加到网格,以便图像调整为网格大小。

不要使用JLabel和ImageIcon。 相反,我会

  • 创建一个扩展JPanel的类
  • 重写其paintComponent(Graphics g)方法
  • 记得在我的覆盖中调用super的方法
  • 给它一个BufferedImage字段,比如说image
  • 通过构造函数或setter参数或两者将图像传递到类中。
  • 调用g.drawImage(image,....)重载,该重载允许重新调整图像的大小,以使其填充JPanel。

链接:

查看此重载:

public abstract boolean drawImage(Image img,
            int x,
            int y,
            int width,
            int height,
            ImageObserver observer)

或这一个:

public abstract boolean drawImage(Image img,
            int dx1,
            int dy1,
            int dx2,
            int dy2,
            int sx1,
            int sy1,
            int sx2,
            int sy2,
            ImageObserver observer) 

编辑
例如,

// big warning: code not compiled nor tested
public class ImagePanel extends JPanel {
  private BufferedImage image;

  public ImagePanel(BufferedImage image) {
    this.image = image;
  }

  @Override
  protected void paintComponent(Graphics g) {
    super.paintComponent(g);
    if (image != null) {
      g.drawImage(image, 0, 0, getWidth(), getHeight(), this);
    }
  }
}

如何将图像添加到网格,以便图像调整为网格大小。

看看Darryl的Stretch Icon

它将动态调整自身大小以填充标签可用的空间。

然后,可以将Icon用作启用Icon的on组件,而无需自定义绘画。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM