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

标签 java image swing resize

我有一个 JPanel,其网格布局为 (5 , 7 ) 、5 行、7 列。

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

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

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

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

最佳答案

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

  • 创建一个扩展 JPanel 的类
  • 覆盖其paintComponent(Graphics g)方法
  • 记得在我的override中调用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);
    }
  }
}

关于java - 调整图像大小使其适合 JPanel 网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23183679/

相关文章:

java - 用 Java 编写异步(或类似异步)客户端套接字代码

java - 如何在 Spring Tiles 2.2 + Spring 4 中重用 put-list-attributes 变量?

html - 显示的图像作为画廊,但不想

image - 使用 VBA 在文件中插入和保留图像 - Excel 2013

java - SWT 图像到 Base64 字符串

java - Util 类可以是抽象类还是最终类?

java - 拒绝 fileChooser 显示链接等互联网资源

java - 尝试使用java更改背景颜色时出错

java - 使用 JTable 的 ClassCastException?

java - 我们可以判断鼠标是否真的点击了 Java 中的复选框吗?