Java中的键盘监听事件KeyListener

Java中的键盘监听事件KeyListener

转载请注明出处:

http://blog.csdn.net/u012301841/article/details/47284917
最近在巩固java基础,发现java的事件机制设计的很好,一个事件源发出事件的消息,只要其他地方注册监听了这个事件源,就可以得到此事件源发出的消息,从而做响应的改变。
后面去深入了解一下,果然为观察者模式。官方说法为采取“委派事件模型”,即事件源为被观察者,监听器为观察者,一个事件源可以有N个观察者。
本意是要说一下键盘监听事件的,但是java所有的事件机制都一样,所以只要了解了观察者模式,这个也很容易了解的

class MyPanel1 extends JPanel implements KeyListener{

    int x = 10;
    int y = 10;

    public MyPanel1() {
        super();
    }

    @Override
    public void paint(Graphics g) {
        super.paint(g);
        g.setColor(Color.red);
        g.fillOval(x, y, 20, 20);
        System.out.println("paint()");
    }

    @Override
    public void keyTyped(KeyEvent e) {
        // TODO Auto-generated method stub

    }

    @Override
    public void keyPressed(KeyEvent e) {
        if ( e.getKeyCode()==KeyEvent.VK_DOWN ){
            y = y+10;
        } else if (e.getKeyCode()==KeyEvent.VK_UP){
            y--;
        } else if (e.getKeyCode()==KeyEvent.VK_RIGHT){
            x = x+10;
        } else if (e.getKeyCode()==KeyEvent.VK_LEFT){
            x--;
        } else {

        }
        this.repaint();
    }

    @Override
    public void keyReleased(KeyEvent e) {

    }

}

MyPanel1 实现了KeyListener这个接口,keyPressed()这个方法是当你按下键盘的某个键松开后就会被调用,根据keyCode()找到所对应的那个键,在执行操作。

public class Demo9_2 extends JFrame{

    private MyPanel1 myPanle;

    public static void main(String[] args) {
        Demo9_2 demo9_2 = new Demo9_2();
    }

    public Demo9_2(){
        myPanle = new MyPanel1();

        this.add(myPanle);

        this.addKeyListener(myPanle);

        this.setSize(400, 300);

        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        this.setVisible(true);
    }


}

this.addKeyListener(myPanle) 就是注册事件,即为事件源分发事件,所以只要键盘有所操作,就会调用KeyListener实现类里面相应的方法。
PS:个人感觉,在以后的编程中遇到和需要自己编写观察者模式的时候还真不少,比如我们的多线程下载,多个界面需要知道进度条的状态,就适合用这种模式来处理。

  • 14
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值