A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 于星星 中级黑马   /  2012-7-27 22:23  /  2215 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

下面的例子中,button事件源被添加了两个事件监听ActionListener和MouseListener,当点击这个按钮时,哪个事件会先被触发呢?
import java.awt.*;
import java.awt.event.*;

public class MouseKeyEventDemo {

        private Frame frame;
        private Button btn;

        public MouseKeyEventDemo() {
                init();
        }

        public void init() {
                frame = new Frame("my frame");
                frame.setBounds(300, 200, 500, 400);
                frame.setLayout(new FlowLayout());
                btn = new Button("按钮");
                frame.add(btn);
                frame.addWindowListener(new WindowAdapter() {
                        public void windowClosing(WindowEvent e) {
                                System.exit(0);
                        }
                });
                btn.addActionListener(new ActionListener() {                        public void actionPerformed(ActionEvent e) {
                                System.out.println("actionPerformed被执行了");                        }
                });
                btn.addMouseListener(new MouseAdapter() {                        private int count = 1;  

                        public void mouseEntered(MouseEvent e) {
                                System.out.println("鼠标第" + count + "次进入到按键上了!!");
                                count++;
                        }

                        public void mouseClicked(MouseEvent e) {
                                if(e.getClickCount()==2)
                                        System.out.println("双击动作!");
                        }
                });
                btn.addKeyListener(new KeyAdapter(){
                        public void keyPressed(KeyEvent k){
                                 System.out.println(k.getKeyChar()+":"+k.getKeyCode()+k.getKeyText(k.getKeyCode()));
                        }
                });
                frame.setVisible(true);
        }

        public static void main(String[] args) {
                new MouseKeyEventDemo();

        }
}

2 个回复

倒序浏览
应该是ActionListener
回复 使用道具 举报
本帖最后由 柳雷 于 2012-7-28 09:38 编辑

所谓事件监听器,就是当你触发某个事件的时候,监听器会做出一定的相应,对于你写的两个监听器,
一个是鼠标划过按钮时的监听器和鼠标按下,一个是按钮被按下
下面是一次双击的执行结果:

从结果中可以看出mouseEntered鼠标划过被执行,然后是双击动作开始,再双击过程中,由于按钮被
按下所以触发事件ActionListener,当第二次按下鼠标即开始执行mouseClicked中的动作,另外这也是
一次按钮被按下的动作,所以又执行一次ActionListener。

评分

参与人数 1技术分 +1 收起 理由
田向向 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马