上一节已经学习了事件处理,这一节需要完成通过键盘的上下左右键控制小球移动。
然后再通过应用到我们绘制的坦克上。
1 /** 2 * 加深对事件处理机制的理解 3 * 通过光标的上下左右键,控制小球的左右上下移动. 4 */ 5 package com.test4; 6 import java.awt.*; 7 import java.awt.event.*; 8 9 import javax.swing.*; 10 public class Demo9_4 extends JFrame { 11 12 MyPanel mp = null; 13 14 public static void main(String[] args) { 15 Demo9_4 demo9_4 = new Demo9_4(); 16 } 17 public Demo9_4(){ 18 mp = new MyPanel(); 19 this.add(mp); 20 21 this.addKeyListener(mp); 22 23 this.setSize(400,300); 24 this.setVisible(true); 25 } 26 27 } 28 //事件源JFrame->Demo9_4,MyPanel监听者,需要画小球 29 //定义自己的面板 30 class MyPanel extends JPanel implements KeyListener{ 31 int x=10; 32 int y=10; 33 public void paint(Graphics g){ 34 super.paint(g); 35 g.fillOval(x, y, 10, 10); 36 } 37 38 @Override 39 public void keyTyped(KeyEvent e) {//输入可以以显示的 40 41 } 42 43 @Override 44 public void keyPressed(KeyEvent e) {//按下去. 45 // System.out.println(e.getKeyCode()==37); 46 if(e.getKeyCode()==KeyEvent.VK_DOWN){ 47 y+=10; 48 }else if(e.getKeyCode()==KeyEvent.VK_UP){ 49 y--; 50 }else if(e.getKeyCode()==KeyEvent.VK_LEFT){ 51 x--; 52 }else if(e.getKeyCode()==KeyEvent.VK_RIGHT){ 53 x++; 54 } 55 this.repaint(); 56 } 57 @Override 58 public void keyReleased(KeyEvent e) {//松开 59 60 } 61 }
可以通过键盘的上下左右键控制小球运动。