错误是在第84行! 说
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;public class MoveBall
{
public static void main(String [] args)
{
BallFrame b=new BallFrame();
b.setVisible(true);
}
}class BallFrame extends JFrame
{
JPanel jp=new JPanel();
public BallFrame()
{
this.setBounds(100,150,400,300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel con=(JPanel)this.getContentPane();
jp.setBackground(Color.black);
con.add(jp);
new Ball(jp).start();
}
}class Ball extends Thread
{
int r=0;
int moveX=2;
int moveY=2;
int ballX=50;
int ballY=50;
int WIDTH=10;
JPanel jp=new JPanel();
public Ball(JPanel jp)
{
this.jp=jp;
System.out.println("jpjp");
jp.addKeyListener(new KeyAdapter()
{
public void keyPressed(KeyEvent e)
{
switch(e.getKeyCode())
{
case KeyEvent.VK_LEFT:r=0;System.out.println("VK_LEFT");break;
case KeyEvent.VK_RIGHT:r=1;System.out.println("VK_RIGHT");break;
case KeyEvent.VK_UP:r=2;System.out.println("VK_UP");break;
case KeyEvent.VK_DOWN:r=3;System.out.println("VK_DOWN");break;
default:System.out.println("others");
}
}
});
jp.setFocusable(true);
}
public void move()
{
Graphics g=jp.getGraphics();
g.setXORMode(jp.getBackground());//错误在这里!!!
g.fillOval(ballX,ballY,WIDTH,WIDTH); switch(r)
{
case 0:ballX+=-moveX;
case 1:ballY+=moveX;
case 2:ballY+=-moveX;
case 3:ballY+=moveX;
}
g.fillOval(ballX,ballY,WIDTH,WIDTH);
g.dispose();
}
public void run()
{
Graphics g=jp.getGraphics();
if(jp==null)
System.out.println("null");
g.setXORMode(jp.getBackground());
g.dispose();
while(true)
{
this.move();
try
{
Thread.sleep(10);
}
catch(Exception ex){}
}
}
}
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;public class MoveBall
{
public static void main(String [] args)
{
BallFrame b=new BallFrame();
b.setVisible(true);
}
}class BallFrame extends JFrame
{
JPanel jp=new JPanel();
public BallFrame()
{
this.setBounds(100,150,400,300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel con=(JPanel)this.getContentPane();
jp.setBackground(Color.black);
con.add(jp);
new Ball(jp).start();
}
}class Ball extends Thread
{
int r=0;
int moveX=2;
int moveY=2;
int ballX=50;
int ballY=50;
int WIDTH=10;
JPanel jp=new JPanel();
public Ball(JPanel jp)
{
this.jp=jp;
System.out.println("jpjp");
jp.addKeyListener(new KeyAdapter()
{
public void keyPressed(KeyEvent e)
{
switch(e.getKeyCode())
{
case KeyEvent.VK_LEFT:r=0;System.out.println("VK_LEFT");break;
case KeyEvent.VK_RIGHT:r=1;System.out.println("VK_RIGHT");break;
case KeyEvent.VK_UP:r=2;System.out.println("VK_UP");break;
case KeyEvent.VK_DOWN:r=3;System.out.println("VK_DOWN");break;
default:System.out.println("others");
}
}
});
jp.setFocusable(true);
}
public void move()
{
Graphics g=jp.getGraphics();
g.setXORMode(jp.getBackground());//错误在这里!!!
g.fillOval(ballX,ballY,WIDTH,WIDTH); switch(r)
{
case 0:ballX+=-moveX;
case 1:ballY+=moveX;
case 2:ballY+=-moveX;
case 3:ballY+=moveX;
}
g.fillOval(ballX,ballY,WIDTH,WIDTH);
g.dispose();
}
public void run()
{
Graphics g=jp.getGraphics();
if(jp==null)
System.out.println("null");
g.setXORMode(jp.getBackground());
g.dispose();
while(true)
{
this.move();
try
{
Thread.sleep(10);
}
catch(Exception ex){}
}
}
}
解决方案 »
- 求分布式的数据传输方案
- 如何将button group的两个align属性集成在一起?
- java socket如何实现同步通信
- i++大问题,谢谢!
- 拜求java包:netscape.javascript.*(高分)
- 请问SQLServer中的text类型的数据 在Java中如何取。用getString()吗?
- 请教:如何动态构建一个类的事例??(今天结账谢谢2002-7-31)
- 我的Jbuilder怎么引用我自己编写的Class文件?
- 弹出对话框(谢谢大侠帮忙)
- Java中两个不同的类继承接口,实例化接口方法时候代码大量重复怎么解决?
- ——————120分求一个问题!!!
- 我可不可以这样理解??(高分)
{
JPanel jp=new JPanel();
public BallFrame()
{
this.setBounds(100,150,400,300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel con=(JPanel)this.getContentPane();
jp.setBackground(Color.black);
con.add(jp);
new Ball(jp).start();
}
}改为:class BallFrame extends JFrame {
JPanel jp = new JPanel(); public BallFrame() {
this.setBounds(100, 150, 400, 300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel con = (JPanel) this.getContentPane(); jp.setBackground(Color.black);
con.add(jp);
this.setVisible(true);//增加这行代码,显示之后才能取的到graphics
new Ball(jp).start();
}
}