java新手一只。这是我的原程序,java新手一只,求大神解惑
import java.awt.*;
import javax.swing.*;
import java.awt.Graphics;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
/**坦克大战0.4
*@author 安晔
*代码重构
*定义常量
*/
public class TankClient extends JFrame{
public static final int WIDTH = 800;
public static final int HEIGHT = 600;
/*主函数*/
public static void main(String []args){
JFrame frm=new JFrame("坦克大战0.4");
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frm.setLayout(null);
Tank tank=new Tank();
tank.setBounds(0, 0, WIDTH,HEIGHT);
tank.setBackground(Color.GREEN);
frm.getContentPane().add(tank);
frm.setBounds(300, 400, WIDTH,HEIGHT);
frm.setResizable(false);
frm.setVisible(true);
}
}
class Tank extends JPanel implements Runnable{
/*定义圆的坐标*/
KeyMonitor k=new KeyMonitor();
public int x=50,y=50;
Thread runner;
/*定义默认构造函数*/
Tank(){
start();
}
public void paint(Graphics g){
super.paint(g);//刷新屏幕,重绘图像
g.setColor(Color.RED);
g.fillOval(x, y, 30, 30);
}
public void start(){
if(runner==null)
runner=new Thread(this);
runner.start();
}
public void run(){
while(true){
this.addKeyListener(new KeyMonitor());
repaint();
try{
Thread.sleep(100);
}catch(InterruptedException e){
e.printStackTrace();
}
}
}
/*双缓存技术解决闪速效果*/
Image offScreenImage = null;
public void update(Graphics g) {
if(offScreenImage == null) {
offScreenImage = this.createImage(800, 600);
}
Graphics gOffScreen = offScreenImage.getGraphics();
Color c = gOffScreen.getColor();
gOffScreen.setColor(Color.GREEN);
gOffScreen.fillRect(0, 0, 800, 600);
gOffScreen.setColor(c);
paint(gOffScreen);
g.drawImage(offScreenImage, 0, 0, null);
}
/*定义键盘监听器*/
private class KeyMonitor extends KeyAdapter {
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
switch(key) {
case KeyEvent.VK_LEFT :
x -= 5;
break;
case KeyEvent.VK_UP :
y -= 5;
break;
case KeyEvent.VK_RIGHT :
x += 5;
break;
case KeyEvent.VK_DOWN :
y += 5;
break;
}
}
}
}