先看一下两个类
public class ImagePanel extends JFrame{
……
}
public class ImageTest{
public static void main(String[] args) {
ImagePanel panel = new ImagePanel(new ImageIcon("images/bg1.jpg").getImage());
JFrame frame = new JFrame("create a component");
frame.getContentPane().add(panel);
frame.pack();
frame.setVisible(true);
// frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
}
运行出错,错误提示如题
修改一处即可解决ImagePanel extends JFrame 改为ImagePanel extends JPanel
错误原因:
不能把一个window(顶级窗口)放到一个container(容器)中去.就是你只能将小容器放大容器中去
由new ImagePanel获取的是一个JFrame容器,而getContentPane获取的只是一个Container