我有一个 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/