java 事件监听

一、简单的监听事件

ActionListener监听一个类:

这个类(或者其他想要进行监听并执行相应操作的类)实现ActionListener接口,然后实现他的一个void actionPerformed(ActionEvent e)方法

在这个类中,如果需要哪一个对象能够在上面实现的事件方法中执行监听到的动作,需要注册监听 jb1.AddActionListener(this),jb1是一个java的按钮对象,是事件源,this指代当前类的实例对象(也可以是其他实现了ActionListener接口和实现了未实现方法的其他类),是监听对象

然后,指定action命令,jb1.setActionCommand("clickjb1"),“clickjb1”是自己命名的一个事件标识,用来识别是哪里触发的事件

之后,在之前实现的那个actionPerformed(ActionEvent e)方法中使用 e.getActionCommand().equals("clickjb1")来确定触发的事件并执行相应的操作

二、键盘监听事件

事件源的类实现KeyListener类,并实现它的三个方法:

void keyPressed(KeyEvent e)//键被按下

keyReleased(KeyEvent e)//键被释放

keyTyped(KeyEvent e)//键的一个值被输出

方法中可以使用 e.getKeyCode() == KeyEvent.VK_DOWN 来获取并比较按下的键是哪个,并据此执行一些事件

然后使用监听对象的类使用this.addKeyListener(moveOvalPanel);,this是监听对象的实例对象,moveOvalPanel是事件源的实例对象。

/**
 * 可以移动的一个小球
 * @author liangqibin
 *
 */
public class MoveOval extends JFrame{
    MoveOvalPanel moveOvalPanel =null;
    public static void main(String[] args) {
        MoveOval moveOval = new MoveOval();
    }
    public MoveOval(){
        moveOvalPanel = new MoveOvalPanel();
        this.add(moveOvalPanel);
        this.addKeyListener(moveOvalPanel);
        
        this.setTitle("可以用上下左右键移动的小球");//设置标题
        this.setSize(400, 200);//设置窗口大小
        this.setLocation(300, 200);//设置相对于window界面的位置
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置关闭窗口保证JVM也退出,避免无谓的内存消耗
        this.setVisible(true);//显示
    }

}
class MoveOvalPanel extends JPanel implements KeyListener{
    int x=10,y=10;
    public void paint(Graphics g){
        super.paint(g);
        g.fillOval(x, y, 10, 10);
    }

    @Override
    public void keyPressed(KeyEvent e) {
        //键被按下
        if(e.getKeyCode() == KeyEvent.VK_DOWN){//下
            y+=5;
        }else if(e.getKeyCode() == KeyEvent.VK_UP){//上
            y-=5;
        }else if(e.getKeyCode() == KeyEvent.VK_RIGHT){//右
            x+=5;
        }else if(e.getKeyCode() == KeyEvent.VK_LEFT){//左
            x-=5;
        }
        //调用repaint()函数来重绘界面
        this.repaint();
        
    }

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

    @Override
    public void keyTyped(KeyEvent e) {
        //键的一个值被输出
        
    }
}


 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值