江西广告网
标题:
Java基础入门学习——事件模型(组图)
[打印本页]
作者:
dick0621
时间:
2008-12-28 12:10
标题:
Java基础入门学习——事件模型(组图)
JAVA的委托事件模型:
事件源--产生事件的地方(单击鼠标,按按钮,选择项目等产生动作的对象).事件--既其所产生的动作状态. 事件源产生一个事件,并把这个事件发送到一个或多个监听程序,监听程序只是等待这个事件并处理它,然后返回.既程序把事件的处理"委托"给一段"代码". 监听程序必须注册一个事件源,才能接收这个事件,这个过程是自动的.监听程序必须实现接收和处理这个事件的方法.
JAVA的图形用户界面的常用事件类(java.awt.event包):
ActionEvent 动作事件类 ComponentEvent 改变构件大小,移动或隐藏时产生的事件 ContainerEvent 容器中添加,删除构件时的事件 FocusEvent 获得,失去焦点时的事件 KeyEvent 接受键盘输入时的事件 MouseEvent 鼠标事件 MouseWheelEvent 鼠标轮事件 TextEvent 文本事件 WindowEvent 窗口激活,关闭,最大化,最小化,打开,退出事件 JAVA的 Component类及其所有的子类,都提供了注册监听程序的方法(注册器) 例如 addWindowlistener(WindowListener wl) wl是处理窗口事件的监听程序的对象.监听程序必须实现事件接口,或者继承已经实现了事件接口的类. JAVA为相对应的事件提供了接口: ActionListener 一个接受动作事件的方法 ComponentListener 4个隐藏,移动,改变大小,显示方法 ContainerListener 2个添加,删除方法 FocusListener 2个获得,失去输入焦点的方法 KeyListener 3个按下,松开,输入字符的方法 MouseListener 5个鼠标单击,按住,松开,进入退出构件方法 MouseMotionListener 两个鼠标拖动,移动的方法 MouseWheelListener 一个鼠标轮变化的方法 TextListener 定义一个文本值改变的方法 WindowListener 定义7个窗口激活,关闭,最大化,最小化,打开,退出,取消激活的方法 //Demo import java.awt.*; import java.awt.event.*; //事件包 import javax.swing.*; class MyWin extends JFrame{ public MyWin(String title){ super(title); addWindowListener(new MywinEvent(this)); //注册窗口监听程序 /* *new MywinEvent() 是继承了WindowAdapter适配器 *WindowAdapter实现了WindowListener接口 */ } JButton jbt; Color cl=Color.RED; void setMyMenu(){ JMenuBar jmb=new JMenuBar(); JMenu jmn=new JMenu("文件"); JMenuItem jmi=new JMenuItem("退出"); jmn.add(jmi); jmb.add(jmn); setJMenuBar(jmb); jmi.addActionListener(new MyactionEvent(this));//注册动作事件 } void setMybutton(){ Container ct=super.getContentPane(); jbt=new JButton("单击"); jbt.setBackground(cl); ct.add(jbt,BorderLayout.CENTER); jbt.addMouseListener(new MymouseEvent(this));//注册鼠标事件 } public void main(String args[]){ MyWin mw=new MyWin("事件--演示"); mw.setMyMenu(); mw.setMybutton(); mw.pack(); mw.setVisible(true); } } //定义窗口监听程序 class MywinEvent extends WindowAdapter{ MyWin mywin; public MywinEvent(MyWin mywin){ this.mywin=mywin; } public void windowClosing(WindowEvent we){ System.exit(0); } } //定义动作监听程序 class MyactionEvent implements ActionListener{ MyWin mywin; public MyactionEvent(MyWin mywin){ this.mywin=mywin; } public void actionPerformed(ActionEvent ae){ System.exit(0); } } //定义鼠标监听程序 class MymouseEvent implements MouseListener{ MyWin mywin; public MymouseEvent(MyWin mywin){ this.mywin=mywin; } public void mouseClicked(MouseEvent me){ if(me.getSource==mywin.jbt) if(mywin.jbt.getBackground()!=Color.BLUE){ mywin.jbt.setBackground(Color.BLUE); mywin.repaint(); }else{ mywin.jbt.setBackground(Color.RED); mywin.repaint(); } } public void mouseEntered(MouseEvent me){} public void mouseExited(MouseEvent me){} public void mousePressed(MouseEvent me){} public void mouseReleased(MouseEvent me){} } //end 这个演示很简单,JAVA 的事件模型结构基本上是这样的. 继承适配器,可以重载你感兴趣的方法,一个,两个都可以.但是,实现接口必须实现这个接口提供的所有方法,哪怕是空方法都必须实现. 当然,熟悉JAVA DOCS(API)很重要,虽然是英文的,但是对我的帮助很大。 下载: Java/book/api.part03.rar" target="_blank">api.part03.rar Java/book/api.part02.rar" target="_blank">api.part02.rar api.part01.rar 下面是我作的一个演示代码,经过ECLIPSE 3.0 编辑,执行通过。
登录/注册后可看大图
点击看大图 结果: 这是起始画面
登录/注册后可看大图
点击看大图
登录/注册后可看大图
这是选号
登录/注册后可看大图
投注图 源码: 附件:MyEventDemo.rar(328K)
欢迎光临 江西广告网 (http://bbs.jxadw.com/)
Powered by Discuz! X3.2