事件处理机制的初步学习

来源:互联网 发布:网络审查的优缺点 编辑:程序博客网 时间:2024/05/22 00:53
/* * 事件处理机制    一个事件源可以有很多的监听着   一个普通的类也可以来监听事件 *  监听方法:   Cat aa = new Cat(); *           jb1.addActionListener(aa) */package com.shijianchuli;import java.awt.*;import javax.swing.*;import java.awt.event.*;public class Demo1 extends JFrame implements ActionListener{//定义一个panelPanel mp = null;JButton jb1 = null;JButton jb2 = null;public static void main(String[] args) {// TODO Auto-generated method stubDemo1 d = new Demo1();}public Demo1(){mp = new Panel();jb1 = new JButton("黑色");jb2 = new JButton("红色");Cat aa = new Cat();this.add(jb1,BorderLayout.NORTH);mp.setBackground(Color.BLACK);this.add(jb2,BorderLayout.SOUTH);this.add(mp);// 注册监听jb1.addActionListener(this);jb1.addActionListener(aa);// 指定 action 命令jb1.setActionCommand("黑色");jb2.addActionListener(this);jb2.setActionCommand("红色");this.setSize(300,200);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.setVisible(true);}// 对事件处理方法  事件对象public void actionPerformed(ActionEvent e) {// TODO Auto-generated method stub//判断是哪个按钮被点击if(e.getActionCommand().equals("黑色")){System.out.println("点击黑色按钮");mp.setBackground(Color.BLACK);}else if(e.getActionCommand().equals("红色")){System.out.println("点击红色按钮");mp.setBackground(Color.RED);}else{System.out.println("不知道");}}}class Cat implements ActionListener{public void actionPerformed(ActionEvent arg0) {// TODO Auto-generated method stubif(arg0.getActionCommand().equals("黑色")){System.out.println("猫猫 黑色");}else if(arg0.getActionCommand().equals("红色")){System.out.println("猫猫 红色");}}}


事件源:  JButton的对象 jb1,jb2 

事件:   ActionEvent的对象  e   arg0

事件监听者:  类的对象  this- Demo1的对象d   和 Cat的对象  aa 


/* *   功能: 加深对时间处理机制的理解   *     1. 通过上下左右按键来控制小球的运动 */package com.shijianchuli;import java.awt.*;import javax.swing.*;import java.awt.event.*;public class Demo2 extends JFrame{/** * @param args */MyPanel mp = null;public static void main(String[] args) {// TODO Auto-generated method stubDemo2 dd = new Demo2();}public Demo2(){mp = new MyPanel();this.add(mp);this.addKeyListener(mp);this.setSize(400,300);this.setVisible(true);}}class MyPanel extends JPanel implements KeyListener{//方法重写int x = 10;int  y =10;public void paint(Graphics g){super.paint(g);g.fillOval(x, y, 10, 10);}public void keyPressed(KeyEvent e) {// TODO Auto-generated method stubSystem.out.println("按键被按下");if(e.getKeyCode() == KeyEvent.VK_DOWN){y++;}else if(e.getKeyCode() == KeyEvent.VK_UP){y--;}else if(e.getKeyCode() == KeyEvent.VK_RIGHT){x++;}else if(e.getKeyCode() == KeyEvent.VK_LEFT){x--;}this.repaint();}public void keyReleased(KeyEvent arg0) {// TODO Auto-generated method stub}public void keyTyped(KeyEvent arg0) {// TODO Auto-generated method stub}}


监听步骤:  a 实现相应的接口  b 把接口的处理方法根据需要编写

                      c 注册监听              c-1 设置监听的command   setActionCommand()      getActionCommand()


注意: 1个事件源可以有多个事件监听者; 1个普通类也可以监听事件

0 0
原创粉丝点击