你那个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);
}
}
}
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);
}
}
}
"Graphics g = panel1.getGraphics()"是不可以的.
因为Graphics是个抽象类,java中抽象类是不允许被实例化的.
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);
}
}
}