import java.awt.*;
import javax.swing.*;
public class JavaTest extends JPanel{
    Image image;
public JavaTest(){

}
public void init(){
image=this.getToolkit().getImage("x.jpg");
}
public void paint(Graphics g){
super.paint(g);
g.drawImage(image,0,0,this);
}
public static void  main(String[]args){
JFrame frame=new JFrame();
Container contentPane=frame.getContentPane();
JavaTest jt=new JavaTest();
contentPane.add(jt,BorderLayout.CENTER);
frame.setSize(300, 400);
frame.setVisible(true);

}

解决方案 »

  1.   

    路径的问题。
    在你的工程下建立文件夹:image,然后把你的图片copy进去。
    然后这样写:
    this.getToolkit().getImage("image/x.jpg"); 
      

  2.   

    如果把getToolkit().getImage()放在构造方法JavaTest中就能显示
    为什么不能在init中初始化。。
      

  3.   

    放在这里初始化也行,但是必须有调用到。你看到哪里调用了?没调用不就是空的吗?就没有初始化,也就没有指向你的图片。放在构造函数是因为实例化的时候一定会走到,放你的init里面,你不调一下怎么走
      

  4.   

    比如,构造函数中调用一下,init();或者就像你说的直接写构造函数中。总之要保证这个image对象在使用之前不是指向空气的~~
      

  5.   

    public void init() {
    image = this.getToolkit().getImage("x.jpg");
    }根本就没有调过,所以image为null,肯定什么也没有显示出来啊
      

  6.   

    原因是这样的:
    1.init方法没有被调用,放到构造函数里去吧。
    2.this.getToolkit().getImage("x.jpg"); 这里的相对路径有问题,如果你是用的Eclipse的话,相对路径是基于工程文件的,就是.project文件所在目录。而不是你的.java或者.class所在的路径。
      

  7.   

    你将x.jpg放到与.project文件同样的地方就可以了
      

  8.   

    楼主如果用了spring ,可以在spring 里配置初始化方法,如果是普通的web工程,可以在web.xml里配置。如果还不是,可以照楼上几位说的在构造器里初始化、。
      

  9.   

    LZ的构造方法是空的,都没调用init,狂晕