黑马程序员技术交流社区

标题: GUI事件执行的顺序 [打印本页]

作者: 于星星    时间: 2012-7-27 22:23
标题: GUI事件执行的顺序
下面的例子中,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();

        }
}

作者: 朱烈葵    时间: 2012-7-27 22:39
应该是ActionListener
作者: 柳雷    时间: 2012-7-28 09:31
本帖最后由 柳雷 于 2012-7-28 09:38 编辑

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

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




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2