本章概述:本章主要讲了如何让坦克动起来,添加键盘监听事件,每隔50ms刷新窗口自动调用画笔,添加键盘处理,根据箭头的状态来判断坦克的移动方向
目录
目录
一、将坦克坐标定为变量,在paint()方法中修改值,paint被调用后,就可以动起来
三、在主线程每隔50ms刷新窗口,调用repaint()方法,repaint()会自动调用paint(g)
四、添加键盘处理,根据上下左右箭头的按键状态,判断坦克的移动方向
本章概述:
一、将坦克坐标定为变量,在paint()方法中修改值,paint被调用后,就可以动起来
public class TankFrame extends Frame {
int x = 200,y=200;
public TankFrame(){
setTitle("tank war");
setSize(800,600);
@ -28,6 +30,8 @@ public class TankFrame extends Frame {
@Override
public void paint(Graphics g) {
// System.out.println("paint");
g.fillRect(200,200,50,50);
g.fillRect(x,y,50,50);
x += 50;
y += 50;
}
}
二、添加键盘监听事件
1、TankFrame
import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
@ -18,6 +20,7 @@ public class TankFrame extends Frame {
setResizable(false);
setVisible(true);
this.addKeyListener(new MyListener());
addWindowListener(new WindowAdapter() {
@Override
@ -31,7 +34,21 @@ public class TankFrame extends Frame {
public void paint(Graphics g) {
// System.out.println("paint");
g.fillRect(x,y,50,50);
x += 50;
y += 50;
// x += 50;
// y += 50;
}
class MyListener extends KeyAdapter{