public class Main extends JFrame{
     
     //Graphics g=getGraphics();  //将getGraphics()放在这里编译时会出现Exception in thread "main" java.lang.NullPointerException
 public Main(){   
     setSize(500, 500);
     setVisible(rootPaneCheckingEnabled);  
 }
 public static void main(String[] args) {
     new Main().paint();  
 }
 public  void paint(){
     //Graphics g=getGraphics();  //将getGraphics()放在这里编译可以通过。
     g.drawLine(20, 20,400, 400);
 }
}请问为什么?

解决方案 »

  1.   

    getGraphics();必须要有已经实例化的对象才能调用吧。你上来就写这句,没有实例的对象,也可以说还没经过构造函数构造出你的main对象,怎么调用?
    这句话应该放在构造函数里。
    应该改成:
     Graphics g;
     public Main(){
          g=getGraphics();     
         setSize(500, 500);
         setVisible(rootPaneCheckingEnabled);  
     }
    说明白了么?
      

  2.   

    因为JFrame 还没显示出来
    其自身的graphics 还未初时
    ls上的代码也是错的
      

  3.   

    抱歉,不严谨了,谢谢楼上提醒,改成:
     public Main(){
         super();
         setSize(500, 500);
         setVisible(rootPaneCheckingEnabled); 
         g=getGraphics();//这句要放在setVisible之后。
         g.drawLine(20, 20,400, 400);
     }