Java事件处理机制2

实现一个小程序,怎样让小球受到键盘的控制,上下左右移动,如图:

 1 public class Demo3 extends JFrame{
 2     MyPanel mp=null;
 3     public static void main(String[] args) {
 4         Demo3 demo=new Demo3();
 5     }
 6 
 7     //构造函数
 8     public Demo3(){
 9         mp=new MyPanel();
10         
11         //mp加入到JFrame
12         this.add(mp);
13         
14         this.addKeyListener(mp);
15         
16         this.setSize(400,300);
17         this.setVisible(true);
18     }
19 }
20 
21 //定义自己的面板
22 class MyPanel extends JPanel implements KeyListener{
23     int x=10;
24     int y=10;
25     public void paint(Graphics g){
26         super.paint(g);
27         
28         g.fillOval(x, y, 10, 10);
29     }
30 
31     @Override
32     public void keyPressed(KeyEvent e) {           //代表某个键被压下去了
33         //System.out.println("键被压"+(char)e.getKeyCode());
34         if(e.getKeyCode()==KeyEvent.VK_DOWN){
35             y++;
36         }else if(e.getKeyCode()==KeyEvent.VK_UP){
37             y--;
38         }else if(e.getKeyCode()==KeyEvent.VK_LEFT){
39             x--;
40         }else if(e.getKeyCode()==KeyEvent.VK_RIGHT){
41             x++;
42         }
43         //调用repaint()函数,重绘界面
44         this.repaint();
45     }
46 
47     @Override
48     public void keyReleased(KeyEvent e) {          //键被释放
49         // TODO Auto-generated method stub        
50     }
51 
52     @Override
53     public void keyTyped(KeyEvent e) {            //键的一个值被输出
54         // TODO Auto-generated method stub    
55     }
56 }

这里的事件源是JFrame

事件的监听者是mp。

运行程序,效果如下:(若想实现小球的快速移动,只需修改x,y增加的大小)

 

posted @ 2017-08-06 22:42  最咸的鱼  阅读(317)  评论(0编辑  收藏  举报