• 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增加的大小)

  • 相关阅读:
    实验3
    实验2
    实验1
    阿里云服务器搭建Halo博客系统
    移动开发技术(三)
    在服务器上部署Anki-Server
    软件测试技术(二)
    函数相关定理
    移动开发技术(一)
    高等数学函数求导
  • 原文地址:https://www.cnblogs.com/cxq1126/p/7296322.html
Copyright © 2020-2023  润新知