键盘事件——TankGame3

 
  
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

/**
 * 事件处理加深理解:
 *     实现:
 *         频幕中绘制一个小球
 *         可以用键盘控制其上下左右移动
 * @author ybz
 *Last_update2018年9月22日上午9:02:56
 */
public class ActionDemo2 extends JFrame {
    MyPanel2 mp=null;
    public ActionDemo2() {
        mp=new MyPanel2();    
        
        
        this.addKeyListener(mp);    //事件源是整个页面,监听类型是键盘事件,监听者是mp,MyPanel2类的实例
        this.add(mp);
        this.setSize(600,500);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
    }
    
    public static void main(String[] args) {
        ActionDemo2 ad2=new ActionDemo2();
    }

}

//定义自己的面板
class MyPanel2 extends JPanel implements KeyListener{
    int x=10;
    int y=10;
    public void paint(Graphics g) {
        super.paint(g);
        g.fillOval(x, y, 20, 20);
        
    }

            //可用来获取键盘按下的值
    public void keyTyped(KeyEvent e) {
//        System.out.println(e.getKeyChar()); //将按下的键名打印出来

        
    }

            //键盘被按下时触发
    public void keyPressed(KeyEvent e) {
//        System.out.println("键盘被按下");
        if(e.getKeyCode() == KeyEvent.VK_S) {
            y=y+2;
            y=y > 500? 0:y;
        }else if(e.getKeyCode() == KeyEvent.VK_W) {
            y-=2;
            y=y < 00? 500:y;
        }
        else if(e.getKeyCode() == KeyEvent.VK_A) {
            x-=2;
            x = x < 0? 600:x;
        }
        else if(e.getKeyCode() == KeyEvent.VK_D) {
            x+=2;
            if(x > 600) x = 0;
        }
        this.repaint();

    }

            //键盘被释放
    public void keyReleased(KeyEvent e) {
        
    }
}
 
  

 

 

  

 

 

一个类实现监听的步骤:

  1.实现相应的接口(ActionListener, KeyListener, MouseListener ,WindowListener 、、、)

  2.把接口的时间按处理方法按照你的需求重写(Override)

  3.在事件源注册监听

  4.事件传递要依靠事件对象

转载于:https://www.cnblogs.com/ybzmy/p/9689661.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值