GUI用户图形界面.ppt
《GUI用户图形界面.ppt》由会员分享,可在线阅读,更多相关《GUI用户图形界面.ppt(39页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、GUI用户图形界面用户图形界面GUI含义含义l全称为:GraphicalUserInterface,用户图形界面,里面提供一些用来操作的窗口、菜单、按钮、工具栏和其他屏幕元素。lJava里有两个包为GUI设计提供功能:AWT和Swing,AWT是早期版本,不能实现全部GUI设计功能,Swing对其进行改进,不但包含原来所有的部件,还具有更加丰富的部件和功能,AWT为Swing的基础。l注意import语句引入。l例子:创建一个窗口对象,向里面添加组件。l演示TestFramelGUI中的众多组件可以分为两类:l基本组件:按钮、文本框、复选框等,这些都是类或者其子类。l容器:是一种特殊的组件,能
2、够容纳其他组件,如窗口、对话框等,这些是类或者其子类。lContain类是Component类的子类。l演示5秒钟之后自动关闭窗口。事件处理事件处理l当用户对组件进行操作(例如拖动、按下按钮等),这时就等于对应用程序进行各种操作。反过来,应用程序也通过GUI来收集用户对其的操作信息。l当按下按钮对象,属于一个事件的发生,假如想要规定该事件发生会执行某种功能,则要编写相应的事件代码。事件处理机制事件处理机制l事件:用户对组件的一个操作。l事件源:发生事件的组件就是事件源。l事件处理器:负责处理事件的方法。l1、处理事件的方法是类中的成员方法,在事件监听器中,监听器必须先与事件源相关联,这样在事件
3、发生后,监听器中的代码才能执行。相关联的这步叫做事件监听器的注册。2、外部动作作用到事件源。3、事件源产生一个事件对象。对象中存在事件的信息4、把事件对象传递给事件处理器,执行代码。事件分类事件分类l按照产生事件的物理操作和GUI组件的表现效果可以分为:lMouseEvent:该类对应着鼠标事件,鼠标按下、点击(按下后释放)lWindowsEvent:该类对应窗口事件,包括点击关闭按钮,最小化最大化等。lActionEvent:动作事件,并不代表一个具体动作,如按下按钮,菜单被单击等都可以看做该类事件。(可以理解为一个动作导致某个组件本身最基本的作用发生了,这就是ActionEvent事件)事
4、件监听器事件监听器l一个事件监听器对象负责处理一类事件。l一类事件的每一种发生情况,分别有监听器对象中的一个方法来具体处理。l事件源和事件监听器对象中进行约束的接口类被称为事件监听器接口。l事件监听器接口类名称与事件类名称是相对应的。(MouseEventMouseListener)l在监听器接口中有很多方法,例如鼠标在组件中单击等方法,里面接受一个鼠标事件类的对象,假如想要在鼠标事件对象产生后执行某功能则可以定义一个类来实现鼠标事件监听器接口中的某个方法,然后下面写入实现功能的代码处理事件处理事件l例子:实现关闭窗口的事件处理。假如像上面一样定义一个窗口。让其具有关闭窗口的功能。(这时注意对
5、窗口关闭事件的代码编写)l注意:l1、怎样实现窗口关闭的代码,代码该写在哪里l2、怎样把事件源(窗口)联系到事件监听器(或者接口)l3、事件监听器的里面的代码又是怎样执行把窗口关闭的过程l4、要用到事件监听器就要用到事件监听器接口,里面必须把接口的方法(里面有对窗口关闭的方法)都给实现,才能调用监听器接口中的代码(要实现接口中的方法,全部),所以可以定义一个类,让这个类实现接口中所有的方法,这样就可以在接口的关闭窗口方法中来填写实际的代码来让其执行功能了!l演示窗口关闭事件适配器事件适配器l刚才的例子可以看出,要想要事件实现代码,那么先要注册事件监听器,而且还有事件监听器接口与之相关联,那么实
6、现功能的方法在事件监听器接口里.所以要定义一个类来实现事件监听器接口,这样才实现功能代码.lJDK中提供了大多数事件监听器接口的最简单的实现类,这些称之为事件适配器(Adapter).l直接用事件适配器来处理事件,可以简化事件监听器的编写.l事件适配器是与事件监听器接口相对应的l假如再想实现事件监听器接口,那么可以定义一个类去继承该接口对应的事件适配器,这样就可以实现接口了。l但是毕竟事件适配器只是简单的实现接口,假如需要一些其他的方法中的代码,那么可让一个类不但继承适配器类,同时再定义那些其他方法来把原来适配器的这些方法覆盖掉,这样就能改变原来适配器定义的方法内容了。l上一个例子,点击关闭按
7、钮就能退出.l注意:定义一个类必须要实现事件监听器接口中的所有方法,但是既然有了事件适配器,而且适配器正好实现了接口(Window)中的7个方法(里面虽然没有代码,但是也叫实现),所以这时可以把新定义的那个类让其继承适配器类,其他6个方法都不用改,直接覆盖适配器类中那个windowClosing方法(在里面写入让其退出的方法就可以)lWindowAdapter,接收窗口事件的抽象适配器类。此类中的方法为空.此类存在的目的是方便创建侦听器对象.l所以自定义一个类让其继承WindowAdapter类,那么假如只需要关闭代码,那么其他六个方法都已经继承,那么只需要改写window Closing方法
8、代码方法代码就可以就可以。l演示修改窗口关闭。(使用事件适配器)灵活设计事件监听器类灵活设计事件监听器类(稍微复杂稍微复杂)l在上一个例子:事件监听器类MyWindowListener与产生组件类TestFram是两个不同的类,事件监听器类中要实现的代码所访问的对象正好是事件源。假如想让监听器类中的代码访问非事件源的组件,如何实现?l思路:不用点击窗口的关闭按钮来关闭窗口(这时就不是触发事件源本身的事件),而是通过添加一个按钮组件,然后再通过点击按钮的事件来触发窗口的关闭(注意:窗口和按钮是两个不同的组件)l思考问题:l1、事件是发生在按钮组件上,但是退出代码要体现在窗口的操作中,必须要实现w
9、indowClosing方法,(注意:这时的事件发生的组件是按钮,所以需要注册的不再是Window的事件接口了,而是ActionListener)l2、假如按照上面思路,定义一个类来实现ActionListener接口,然后再实现里面退出窗口的按钮可以不.l演示灵活运行事件监听器。l但是注意:这样的代码太乱,要想整齐点,可以把生成按钮,注册按钮对应的事件监听器对象的代码都放在一个方法里,然后让TestFrame的对象调用这个方法.l演示灵活应用事件监听器2事件处理的多重运用事件处理的多重运用l用户的一个操作,有可能触发两个事件的产生:例如,用户用鼠标按一个按钮,既触发了鼠标事件,又触发了按钮本
10、身被点击的事件。l所以设计思想为:程序应该根据实际需要来编写要实现的代码,所以根据实际需要来处理其中的一个事件或者是两个事件。想要处理两个事件就得注册两个事件监听器对象。l一个组件一个动作可以产生多个不同类型的事件,所以它可以注册多个不同类型的监听器。l一个事件监听器对象可以注册到多个事件源上,等于不同的事件源发生的同一事件都由一个对象统一来处理。l既要实现点击按钮会退出窗口,还要实现会打印出一句话.l所以在按钮上就需要注册两个事件监听器对象,一个是处理鼠标事件,另一个是处理按钮的Action事件,所以处理两个监听器接口,实现里面需要编写代码的方法。GUI图形操作图形操作l思考:假如想要在组件
11、上进行画图、打印文字或显示图像等,组件本身是否提供该方法。(否)l假如想要做怎么办,注意:组件提供一个getGraphics(),(从Component继承)该方法返回一个包含该组件屏幕外观信息的Graphics类对象,该类提供在组件绘制图形,打印文字,显示图像等方法。lGraphics.drawLine(intx1,inty1,intx2,inty2):画直线,已x1,y1坐标开始,以x2,y2坐标结束。lGraphics.drawString(Stringstr,intx,inty):输出一个矩形区域,里面包含String文本,矩形的左下角以(x,y)坐标开始。String文本(x,y)应
12、用应用l想要在窗口中以鼠标按下的位置作为起始点,鼠标释放的位置作为终止点,在把鼠标释放时将直线画出,并在起始点和终止点打印出它们的坐标值。l准备:1、准备好一个窗口作为画板.l2、因为是用鼠标点击释放来确定直线两端的坐标并画直线,所以需要注册鼠标类的事件监听器!l3、drawline方法为在方法里输入x,y坐标,然后以起始点和终点画出直线,那么本程序要求的是以鼠标按下和释放时鼠标所在的位置坐标为起始和终点,那么怎么把鼠标按下和释放时所在的坐标给输入到drawline方法里呢?l可以在鼠标类监听器接口中实现鼠标点击和释放的两个方法:当鼠标点击时,得到x,y坐标作为起始点,当鼠标释放时,得到这时的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- GUI 用户 图形界面
限制150内