当幸福莱敲门

导航

 
  1 /**
  2  * 事件处理机制,采用的是委派事件事件模型
  3  * 当事件发生时,产生的事件的对象(即事件源),会把此“信息”传递给“事件的监听者”处理的一种方式
  4  * 而这里所说的信息“信息”实际上就是java.awt.event事件类库里某个类所创建的对象,我们暂时
  5  * 把它称为“事件的对象”
  6  */
  7 package com.test4;
  8 import java.awt.*;
  9 import javax.swing.*;
 10 import java.awt.event.*;
 11 //继承并监听接口
 12 public class day20 extends JFrame implements ActionListener{
 13     MyPanel mp=null;
 14     JButton jb1=null;
 15     JButton jb2=null;
 16     public static void main(String[] args) {
 17         // TODO Auto-generated method stub
 18         day20 ddDay20=new day20();
 19     }
 20     public day20() {
 21         mp=new MyPanel();
 22         //按扭是事件源
 23         jb1=new JButton("黑色");
 24         
 25         jb2=new JButton("红色");
 26         
 27         
 28         
 29         this.add(mp); //把面板加入JFrame中
 30         
 31         //要实现动作首先必须对事件源进行注册监听
 32         //对按钮进行注册监听,哪如何才知道是哪个按钮产生的事件源呢
 33         //指定action命令
 34         this.add(jb1,BorderLayout.NORTH); //把按钮1加入面板中
 35         jb1.addActionListener(this);  //对按钮1进行注册监听
 36         jb1.setActionCommand("黑色"); //对注册的监听进行传参
 37         
 38         
 39         this.add(jb2,BorderLayout.SOUTH); //把按钮2加到面板中
 40         jb2.addActionListener(this); //对按钮2进行注册监听
 41         jb2.setActionCommand("红色"); //对按钮2进行传参
 42         mp.setBackground(Color.black); //设置面板背景色
 43         
 44         //我们如何让猫猫也注册监听呢?
 45         Cat cat1=new Cat();//我们新建一只猫不就可以了
 46         //然后把监听的事拿给猫猫监听就可以了,注册监听
 47         jb1.addActionListener(cat1);
 48         
 49         //对面板进行设置
 50         this.setSize(400,350);
 51         this.setTitle("事件监听机制");
 52         this.setLocation(500, 400);
 53         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 54         this.setVisible(true);
 55         
 56     }
 57     //对事件处理的方法
 58     @Override
 59     public void actionPerformed(ActionEvent e) {
 60         // TODO Auto-generated method stub
 61         System.out.println("有按钮事件产生了");
 62         if (e.getActionCommand().equals("黑色")) {
 63             System.out.println("你点了黑色按钮");
 64             mp.setBackground(Color.black);
 65         }else if(e.getActionCommand().equals("红色")) {
 66             System.out.println("你点了黑色按钮");
 67             mp.setBackground(Color.red);
 68         }else {
 69             System.out.println("error没有接收到参数");
 70         }
 71             
 72         
 73     }
 74 }
 75 //定义一个自己的面板,并重写paint方法
 76 class MyPanel extends JPanel
 77 {
 78     public void paint(Graphics g) {  //重写paint方法
 79         super.paint(g);
 80     }
 81 }
 82 
 83 //定义了一个猫猫类,并把监听的方法实现
 84 class Cat implements ActionListener
 85 {
 86 
 87     @Override
 88     public void actionPerformed(ActionEvent e) {
 89         // TODO Auto-generated method stub
 90         System.out.println("猫也知道按钮被点击了,但是不知道是哪个按钮");
 91         if (e.getActionCommand().equals("黑色")) {
 92             System.out.println("你点了黑色按钮");
 93             
 94         }else if(e.getActionCommand().equals("红色")) {
 95             System.out.println("你点了黑色按钮");
 96             
 97         }else (){
 98             System.out.println("error没有接收到参数");
 99         }
100     }
101     
102 }

 

常用的事件类接口

 

  1 /**
  2  * 让我的面板知道鼠标的点击事件,和点击的X,Y的值
  3  * 让我的面板知道键盘录入的是哪个按键
  4  * 让我的面板知道托拽窗体的方法
  5  * 
  6  */
  7 package com.test4;
  8 
  9 import java.awt.Graphics;
 10 import java.awt.event.KeyEvent;
 11 import java.awt.event.KeyListener;
 12 import java.awt.event.MouseEvent;
 13 import java.awt.event.MouseListener;
 14 import java.awt.event.MouseMotionListener;
 15 import java.awt.event.WindowEvent;
 16 import java.awt.event.WindowListener;
 17 
 18 import javax.swing.JFrame;
 19 import javax.swing.JPanel;
 20 
 21 public class day22 extends JFrame{  //继承JFrame
 22     Mypanlee my=null; //新建一个自己的面板
 23     public static void main(String[] args) {
 24         // TODO Auto-generated method stub
 25         day22 ddDay22=new day22();
 26     }
 27     //构造函数,初始化成员属性
 28     public day22(){
 29         my=new Mypanlee();
 30         
 31         this.add(my); //把面板加入到JFrame
 32         
 33         //注册监听_鼠标的
 34         this.addMouseListener(my);
 35         //注册键盘的监听
 36         this.addKeyListener(my);
 37         //注册鼠标托拽的监听
 38         this.addMouseMotionListener(my);
 39         //注册窗口的监听
 40         this.addWindowListener(my);
 41         
 42         //设置面板属性
 43         this.setSize(400,300);
 44         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 45         this.setVisible(true);
 46     }
 47 }
 48 
 49 //构建一个自己的面板
 50 class Mypanlee extends JPanel implements MouseListener,
 51 KeyListener,MouseMotionListener,WindowListener{
 52     //重写paint方法
 53     public void paint(Graphics g) {
 54         super.paint(g);
 55     }
 56     //接收鼠标过来的信息并做出处理
 57     @Override//鼠标点击产生的操作
 58     public void mouseClicked(MouseEvent e) {
 59         // TODO Auto-generated method stub
 60         System.out.println("鼠标点击了X值为:"+e.getX()+"   Y值是:"+e.getY());
 61     }
 62 
 63     @Override//鼠标移动到Mypanel我的面板后的操作
 64     public void mousePressed(MouseEvent e) {
 65         // TODO Auto-generated method stub
 66         System.out.println("鼠标被按下了");
 67     }
 68 
 69     @Override//鼠标离开Mypanel我的面板后的操作
 70     public void mouseReleased(MouseEvent e) {
 71         // TODO Auto-generated method stub
 72         System.out.println("鼠标被松开了");
 73     }
 74 
 75     @Override//鼠标按下后的操作
 76     public void mouseEntered(MouseEvent e) {
 77         // TODO Auto-generated method stub
 78         System.out.println("鼠标来了");
 79     }
 80 
 81     @Override//鼠标松开后的操作
 82     public void mouseExited(MouseEvent e) {
 83         // TODO Auto-generated method stub
 84         System.out.println("鼠标离开了");
 85     }
 86     //以下是键盘的监听事件
 87     @Override//某键被按下后的具体信息
 88     public void keyTyped(KeyEvent e) {
 89         // TODO Auto-generated method stub
 90         
 91     }
 92     @Override//某个键被按下
 93     public void keyPressed(KeyEvent e) {
 94         // TODO Auto-generated method stub
 95         System.out.println("被按下的键是:"+e.getKeyChar());
 96     }
 97     @Override//某个键被松开
 98     public void keyReleased(KeyEvent e) {
 99         // TODO Auto-generated method stub
100         
101     }
102     //这是鼠标托拽的监听方法
103     @Override//鼠标按住面板移动的方法
104     public void mouseDragged(MouseEvent e) {
105         // TODO Auto-generated method stub
106         System.out.println("鼠标按住面板移动的X坐标是:"+e.getX()+"  y坐标是"+e.getY());
107     }
108     @Override//鼠标在面板上移动的方法
109     public void mouseMoved(MouseEvent e) {
110         // TODO Auto-generated method stub
111         System.out.println("?");
112     }
113     //这是窗口的监听方法,还有不懂的自己查帮助文档
114     @Override//窗口被打开的方法
115     public void windowOpened(WindowEvent e) {
116         // TODO Auto-generated method stub
117         System.out.println("窗口被打开");
118     }
119     @Override//窗口被关闭的方法
120     public void windowClosing(WindowEvent e) {
121         // TODO Auto-generated method stub
122         System.out.println("窗口被关闭");
123     }
124     @Override
125     public void windowClosed(WindowEvent e) {
126         // TODO Auto-generated method stub
127         
128     }
129     @Override
130     public void windowIconified(WindowEvent e) {
131         // TODO Auto-generated method stub
132         System.out.println("窗口被最小化了");
133     }
134     @Override
135     public void windowDeiconified(WindowEvent e) {
136         // TODO Auto-generated method stub
137         
138     }
139     @Override
140     public void windowActivated(WindowEvent e) {
141         // TODO Auto-generated method stub
142         
143     }
144     @Override
145     public void windowDeactivated(WindowEvent e) {
146         // TODO Auto-generated method stub
147         
148     }
149 }

 

posted on 2020-08-19 08:37  当幸福莱敲门  阅读(132)  评论(0)    收藏  举报