你那个java.lang.NullPointerException主要是"Graphics g = panel1.getGraphics()"
Graphics是个抽象类,java中抽象类是不允许被实例化的.
我帮你修改的:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class mygame extends Frame{
public int x,y;
JButton r,d,l,u,c;
JPanel panel1;
move m=new move();

  public static void main(String[] args){
new mygame();
  }
public mygame(){
JFrame f=new JFrame("mygame");
Container con=f.getContentPane();

JPanel panel=new JPanel();
con.setLayout(new BorderLayout());
panel.add(u=new JButton("up"));
panel.add(r=new JButton("right"));
panel.add(l=new JButton("left"));
panel.add(d=new JButton("down"));
con.add(BorderLayout.NORTH,panel);
JPanel panel1=new JPanel();
panel1.setSize(500,100);
panel1.setBackground(Color.blue);
panel1.setForeground(Color.red);
con.add(BorderLayout.CENTER,panel1);

f.pack();
f.setSize(300,400);
f.setVisible(true);
f.setResizable(false);
m.start();

}
 
class move extends Thread
{
    public void run(){
     for(int i=0;i<100;i++){
     try
     {sleep(400);
    
       repaint();
      //   Graphics g = panel1.getGraphics();
      // g.setColor(Color.red);
         // g.draw3DRect(10,10,20,20,true);
         }
     catch(InterruptedException e){}
   
  }
    }
    public void paint(Graphics g)
    {
    g.setColor(Color.red);
    g.draw3DRect(10,10,20,20,true);
    }
       }
}

解决方案 »

  1.   

    java.lang.NullPointerException空的引用(也就是说没有实例化)
    "Graphics g = panel1.getGraphics()"是不可以的.
    因为Graphics是个抽象类,java中抽象类是不允许被实例化的.
      

  2.   

    是不是应该先在canvas上画出,再把cavas加到到panel上
      

  3.   

    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;public class mygame extends Frame{
    public int x,y;
    JButton r,d,l,u,c;
    JPanel panel1;
    move m=new move();

      public static void main(String[] args){
    new mygame();
      }
    public mygame(){
    JFrame f=new JFrame("mygame");
    Container con=f.getContentPane();
    JPanel panel=new JPanel();
    con.setLayout(new BorderLayout());
    panel.add(u=new JButton("up"));
    panel.add(r=new JButton("right"));
    panel.add(l=new JButton("left"));
    panel.add(d=new JButton("down"));
    con.add(BorderLayout.NORTH,panel);        myCanvas c=new myCanvas();
    c.setBackground(Color.red);
    //JPanel panel1=new JPanel();
    c.setSize(500,100);
            /*
    panel1.setBackground(Color.BLUE);
    panel1.setForeground(Color.red);
            panel1.add(c);*/
    con.add(BorderLayout.CENTER,c);
    f.pack();
    f.setSize(300,400);
    f.setVisible(true);
    f.setResizable(false);
    m.start();

    }
     
    class move extends Thread{
        public void run(){
         for(int i=0;i<100;i++){
         try{sleep(400);
           repaint();
          //   Graphics g = panel1.getGraphics();
          // g.setColor(Color.red);
             // g.draw3DRect(10,10,20,20,true);
             }
         catch(InterruptedException e){}
      }
        }
           }
           class myCanvas extends Canvas
           {
        public void paint(Graphics g)
        {
        g.setColor(Color.blue);
        g.draw3DRect(10,10,20,20,true);
        }
           }
    }