使用ComponentListener监听容器大小的改变,当容器大小改变时,重新绘制图片。
时间: 2024-03-24 10:38:01 浏览: 52
自动改变窗口大小_
好的,以下是一个使用ComponentListener监听容器大小改变的示例代码:
```
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class ImagePanel extends JPanel implements ComponentListener {
private Image image;
public ImagePanel(Image image) {
this.image = image;
addComponentListener(this);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(image, 0, 0, getWidth(), getHeight(), this);
}
@Override
public void componentResized(ComponentEvent e) {
repaint();
}
@Override
public void componentMoved(ComponentEvent e) {}
@Override
public void componentShown(ComponentEvent e) {}
@Override
public void componentHidden(ComponentEvent e) {}
}
```
在这个示例代码中,ImagePanel是一个继承自JPanel的类,它的构造函数接收一个Image对象作为参数,并且调用addComponentListener()方法将自己注册为容器的监听器。在paintComponent()方法中,通过Graphics.drawImage()方法绘制图片,并且使用getWidth()和getHeight()方法获取容器的大小来适配图片的大小。在componentResized()方法中,当容器大小改变时,重新绘制图片。其它三个方法可以不做任何处理。
你可以将ImagePanel添加到其它容器中,当容器大小改变时,ImagePanel会自动重新绘制图片以适应新的容器大小。
阅读全文