import java.awt.*;
import javax.swing.*;
public class ImagePanel extends JPanel {
private Image img;
public ImagePanel(Image img){ //构造
this.img=img;
Dimension size=new Dimension(img.getWidth(null),img.getHeight(null)); //获取图片大小。
setSize(size);
setPreferredSize(size);
setMinimumSize(size);
setMaximumSize(size);
setLayout(null); //使用绝对布局管理器。
}
public void paintComponent(Graphics g){
g.drawImage(img, 0, 0, null);
}
}
请注意:我在上面用的是paintComponent(Graphics g)方法,而不是 paint(Graphics g)方法,否则加在这个面板中的子组件将无法绘制。
下面写个测试类:
import java.awt.*;
import javax.swing.*;
public class testPanel {
public static void main(String[] args){
Image img=new ImageIcon("images/bg.jpg").getImage();
JFrame frame=new JFrame("My hack one");
ImagePanel panel=new ImagePanel(img);
frame.getContentPane().add(panel);
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
本文介绍了一个自定义的 Java Swing 组件 ImagePanel,用于在 Swing 应用中高效显示图片。该组件通过覆盖 paintComponent 方法确保了图片的正确渲染,并且能够适应不同大小的图片。文中还提供了一个简单的测试类示例,展示了如何使用该组件。
747

被折叠的 条评论
为什么被折叠?



