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 }
浙公网安备 33010602011771号