(黑马程序员)事件监听机制应用

本文详细介绍了Java中事件监听机制的四个组成部分:事件源、事件、监听器及事件处理方式。通过具体示例展示了如何为窗体和按钮添加事件监听器,以及如何实现鼠标和键盘的监听功能。



事件监听机制的组成

1.事件源(组件)

2.事件(Event)

3.监听器(Listener)

4.发生事件后的处理方式

------------------------------------------------------------------------------

例如在窗体上和在按钮上添加监听的方法如下:

 public class FrameDemo {

public static void main(String[] args) {


Frame f = new Frame("my frame");

f.setBounds(400, 200, 500, 400);

f.setLayout(new FlowLayout());//设置流式布局

Button but  = new Button("一个按钮");

f.add(but);//将按钮添加到窗体中。 

f.addWindowListener(new WindowAdapter() {

@Override

public void windowClosing(WindowEvent e) {

System.out.println("closing......."+e);

System.exit(0);

}

});

//在按钮上加上一个监听。

but.addActionListener(new ActionListener() {

// 新建一个监听器对象,这里用的匿名内部类方式,并注册到事件源上

@Override

//监听器对象监听的某种事件,就是在这个类内定义的方法

public void actionPerformed(ActionEvent e) { //监听某种事件发生后就形成一个对象传到这个方法,就像catch到的e一样,是自动传进来的


//监听到这个事件要采取的动作,就是这个方法的内容

System.out.println("button run .....");

System.exit(0);


}

});

f.setVisible(true);

System.out.println("over");

}}

-------------------------------------------------------------------------------------------------------

例如在添加鼠标和键盘监听的方法如下:

public class MouseAndKeyDemo {

private Frame f;

private TextField tf;

private Button but;

public static void main(String[] args) {

new MouseAndKeyDemo();

}

public MouseAndKeyDemo() {

init();

}

private void init() {

f = new Frame("演示鼠标和键盘监听");

f.setBounds(400,200,500,400);

f.setLayout(new FlowLayout());

tf = new TextField(35);

but = new Button("一个按钮");

f.add(tf);

f.add(but);

myEvent();

f.setVisible(true);

}

private void myEvent() {

//给文本框添加键盘监听。

tf.addKeyListener(new KeyAdapter() {

@Override

public void keyPressed(KeyEvent e) {

// System.out.println("key run..."+KeyEvent.getKeyText(e.getKeyCode())+"::::"+e.getKeyCode());

// int code = e.getKeyCode();

// if(!(code>=KeyEvent.VK_0 && code<=KeyEvent.VK_9)){

// System.out.println("必须是数字");

// e.consume();

// }

if(e.isControlDown() && e.getKeyCode()==KeyEvent.VK_ENTER){

System.out.println("enter run ...");

}

}

});

f.addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) {

System.exit(0);

}

});

but.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

// System.out.println("action run.....");

}

});

//在按钮上添加一个鼠标监听.

but.addMouseListener(new MouseAdapter() {

private int count = 1;

public void mouseEntered(MouseEvent e) {

// System.out.println("mouse enter..."+count++);

// tf.setText("mouse enter..."+count++);

}

public void mouseClicked(MouseEvent e) {

if(e.getClickCount()==2)

tf.setText("mouse double click..."+count++);

// System.out.println("mouse click..."+count++);

// System.out.println(e);

}

});

}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值