《gui用户图形界面》ppt课件

上传人:tian****1990 文档编号:74151449 上传时间:2019-01-27 格式:PPT 页数:39 大小:410.81KB
返回 下载 相关 举报
《gui用户图形界面》ppt课件_第1页
第1页 / 共39页
《gui用户图形界面》ppt课件_第2页
第2页 / 共39页
《gui用户图形界面》ppt课件_第3页
第3页 / 共39页
《gui用户图形界面》ppt课件_第4页
第4页 / 共39页
《gui用户图形界面》ppt课件_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《《gui用户图形界面》ppt课件》由会员分享,可在线阅读,更多相关《《gui用户图形界面》ppt课件(39页珍藏版)》请在金锄头文库上搜索。

1、GUI用户图形界面,GUI含义,全称为:Graphical User Interface,用户图形界面,里面提供一些用来操作的窗口、菜单、按钮、工具栏和其他屏幕元素。 Java 里有两个包为GUI设计提供功能:AWT和Swing,AWT是早期版本,不能实现全部GUI设计功能,Swing对其进行改进,不但包含原来所有的部件,还具有更加丰富的部件和功能,AWT为Swing的基础。 注意import 语句引入。 例子:创建一个窗口对象,向里面添加组件。 演示TestFrame,GUI中的众多组件可以分为两类: 基本组件:按钮、文本框、复选框等,这些都是java.awt.Component类或者其子类

2、。 容器:是一种特殊的组件,能够容纳其他组件,如窗口、对话框等,这些是java.awt.Container类或者其子类。 Contain类是Component类的子类。 演示5秒钟之后自动关闭窗口。,事件处理,当用户对组件进行操作(例如拖动、按下按钮等),这时就等于对应用程序进行各种操作。反过来,应用程序也通过GUI来收集用户对其的操作信息。 当按下按钮对象,属于一个事件的发生,假如想要规定该事件发生会执行某种功能,则要编写相应的事件代码。,事件处理机制,事件:用户对组件的一个操作。 事件源:发生事件的组件就是事件源。 事件处理器:负责处理事件的方法。 1、处理事件的方法是类中的成员方法,在事

3、件监听器中,监听器必须先与事件源相关联,这样在事件发生后,监听器中的代码才能执行。 相关联的这步叫做事件监听器的注册。 2、外部动作作用到事件源。 3、事件源产生一个事件对象。对象中存在事件的信息 4、把事件对象传递给事件处理器,执行代码。,事件分类,按照产生事件的物理操作和GUI组件的表现效果可以分为: MouseEvent:该类对应着鼠标事件,鼠标按下、点击(按下后释放) WindowsEvent:该类对应窗口事件,包括点击关闭按钮,最小化最大化等。 ActionEvent:动作事件,并不代表一个具体动作,如按下按钮,菜单被单击等都可以看做该类事件。(可以理解为一个动作导致某个组件本身最基

4、本的作用发生了,这就是ActionEvent事件),事件监听器,一个事件监听器对象负责处理一类事件。 一类事件的每一种发生情况,分别有监听器对象中的一个方法来具体处理。 事件源和事件监听器对象中进行约束的接口类被称为事件监听器接口。 事件监听器接口类名称与事件类名称是相对应的。(MouseEventMouseListener) 在监听器接口中有很多方法,例如鼠标在组件中单击等方法,里面接受一个鼠标事件类的对象,假如想要在鼠标事件对象产生后执行某功能则可以定义一个类来实现鼠标事件监听器接口中的某个方法,然后下面写入实现功能的代码,处理事件,例子:实现关闭窗口的事件处理。假如像上面一样定义一个窗口

5、。让其具有关闭窗口的功能。(这时注意对窗口关闭事件的代码编写) 注意: 1、怎样实现窗口关闭的代码,代码该写在哪里 2、怎样把事件源(窗口)联系到事件监听器(或者接口) 3、事件监听器的里面的代码又是怎样执行把窗口关闭的过程 4、 要用到事件监听器就要用到事件监听器接口,里面必须把接口的方法(里面有对窗口关闭的方法)都给实现,才能调用监听器接口中的代码(要实现接口中的方法,全部),所以可以定义一个类,让这个类实现接口中所有的方法,这样就可以在接口的关闭窗口方法中来填写实际的代码来让其执行功能了! 演示窗口关闭,事件适配器,刚才的例子可以看出,要想要事件实现代码,那么先要注册事件监听器,而且还有

6、事件监听器接口与之相关联,那么实现功能的方法在事件监听器接口里.所以要定义一个类来实现事件监听器接口,这样才实现功能代码. JDK中提供了大多数事件监听器接口的最简单的实现类,这些称之为事件适配器(Adapter). 直接用事件适配器来处理事件,可以简化事件监听器的编写. 事件适配器是与事件监听器接口相对应的,假如再想实现事件监听器接口,那么可以定义一个类去继承该接口对应的事件适配器,这样就可以实现接口了。 但是毕竟事件适配器只是简单的实现接口,假如需要一些其他的方法中的代码,那么可让一个类不但继承适配器类,同时再定义那些其他方法来把原来适配器的这些方法覆盖掉,这样就能改变原来适配器定义的方法

7、内容了。,上一个例子,点击关闭按钮就能退出. 注意:定义一个类必须要实现事件监听器接口中的所有方法,但是既然有了事件适配器,而且适配器正好实现了接口(Window)中的7个方法(里面虽然没有代码,但是也叫实现),所以这时可以把新定义的那个类让其继承适配器类,其他6个方法都不用改,直接覆盖适配器类中那个windowClosing方法(在里面写入让其退出的方法就可以),WindowAdapter,接收窗口事件的抽象适配器类。此类中的方法为空.此类存在的目的是方便创建侦听器对象. 所以自定义一个类让其继承WindowAdapter类,那么假如只需要关闭代码,那么其他六个方法都已经继承,那么只需要改写

8、window Closing方法代码就可以。 演示修改窗口关闭。(使用事件适配器),灵活设计事件监听器类(稍微复杂),在上一个例子:事件监听器类MyWindowListener与产生组件类TestFram是两个不同的类,事件监听器类中要实现的代码所访问的对象正好是事件源。假如想让监听器类中的代码访问非事件源的组件,如何实现? 思路:不用点击窗口的关闭按钮来关闭窗口(这时就不是触发事件源本身的事件),而是通过添加一个按钮组件,然后再通过点击按钮的事件来触发窗口的关闭(注意:窗口和按钮是两个不同的组件),思考问题: 1、事件是发生在按钮组件上,但是退出代码要体现在窗口的操作中,必须要实现windo

9、wClosing方法,(注意:这时的事件发生的组件是按钮,所以需要注册的不再是Window的事件接口了,而是ActionListener) 2、假如按照上面思路,定义一个类来实现ActionListener接口,然后再实现里面退出窗口的按钮可以不.,演示灵活运行事件监听器。 但是注意:这样的代码太乱,要想整齐点,可以把生成按钮,注册按钮对应的事件监听器对象的代码都放在一个方法里,然后让TestFrame的对象调用这个方法. 演示灵活应用事件监听器2,事件处理的多重运用,用户的一个操作,有可能触发两个事件的产生:例如,用户用鼠标按一个按钮,既触发了鼠标事件,又触发了按钮本身被点击的事件。 所以设

10、计思想为:程序应该根据实际需要来编写要实现的代码,所以根据实际需要来处理其中的一个事件或者是两个事件。想要处理两个事件就得注册两个事件监听器对象。 一个组件一个动作可以产生多个不同类型的事件,所以它可以注册多个不同类型的监听器。 一个事件监听器对象可以注册到多个事件源上,等于不同的事件源发生的同一事件都由一个对象统一来处理。,既要实现点击按钮会退出窗口,还要实现会打印出一句话. 所以在按钮上就需要注册两个事件监听器对象,一个是处理鼠标事件,另一个是处理按钮的Action事件,所以处理两个监听器接口,实现里面需要编写代码的方法。,GUI图形操作,思考:假如想要在组件上进行画图、打印文字或显示图像

11、等,组件本身是否提供该方法。(否) 假如想要做怎么办,注意:组件提供一个getGraphics(),(从Component继承)该方法返回一个包含该组件屏幕外观信息的Graphics类对象,该类提供在组件绘制图形,打印文字,显示图像等方法。 Graphics.drawLine(int x1,int y1,int x2, int y2):画直线,已x1,y1坐标开始,以x2,y2坐标结束。 Graphics.drawString(String str,int x,int y):输出一个矩形区域,里面包含String文本,矩形的左下角以(x,y)坐标开始。,String文本,(x,y),应用,想要

12、在窗口中以鼠标按下的位置作为起始点,鼠标释放的位置作为终止点,在把鼠标释放时将直线画出,并在起始点和终止点打印出它们的坐标值。 准备:1、准备好一个窗口作为画板. 2、因为是用鼠标点击释放来确定直线两端的坐标并画直线,所以需要注册鼠标类的事件监听器! 3、drawline方法为在方法里输入x,y坐标,然后以起始点和终点画出直线,那么本程序要求的是以鼠标按下和释放时鼠标所在的位置坐标为起始和终点,那么怎么把鼠标按下和释放时所在的坐标给输入到drawline方法里呢? 可以在鼠标类监听器接口中实现鼠标点击和释放的两个方法:当鼠标点击时,得到x,y坐标作为起始点,当鼠标释放时,得到这时的x,y坐标,

13、然后把起始坐标一起输入到drawLine()的参数里,这样,从两个坐标之间的直线就形成了! 演示简单画直线。,写入坐标值可以调用Graphics中的drawString方法. 注意,因为在鼠标释放时会产生直线,并且会显示出坐标值,那么在鼠标释放方法里写入如上的代码. 演示画坐标直线,图像操作,Component类:该类为GUI组件中共同父类,其为抽象类,里面定义的方法都为作为一个GUI组件所应具备的基本功能.例如paint方法就为该类的方法,被其他具体组件类继承.getToolkit方法等. 预备:paint(Graphics g):绘制此组件的方法,是component类的子类都有的方法 ,

14、 当窗口从最大化,最小化状态还原,或者被其他窗口覆盖,或者自己在定制一些非标准的组件(非标准为不是系统自带的组件),系统都会自动重画标准组件的图形图象,而不会自动重画组件上设计者自己定制的图形.一般解决办法为重写paint. Graphics.drawImage(Image img,int x,int y) 绘制当前可用的指定图像的指定区域,其中img是要显示的图像对象, x,y是图像显示的左上角的坐标.,实例,想创建一个窗口,然后让其显示出一个图像. 演示图像操作1.,注意:在处理空指针异常后,程序虽然能够正常运行,但是图像并没有正常显示出来. 窗体在初始化时也会被调用paint方法,这样d

15、rawImage()绘制的图像为非标准组件,所以被paint()擦除了. 在窗口显示一个图片,这个属于自己去定制的图片,而不是系统原有的标准组件,这时系统会自动调用paint()(仅此一次!),擦除自己定制的图画,只留下标准的组件, 要想继续保留自己定制的图片,必须重写paint(),并且在里面写入要画图片的方法代码,这样系统自动调用paint方法时就会实现里面显示图片的代码. 解决办法:重写paint方法,并把插入图片的代码写在paint()里面,这样调用的时候会执行插入图片. 演示图像操作完整.,Canvas类,该类是最简单和最基本的GUI的组件,该类对象代表一块空白的矩形区域,程序可以在

16、该区域进行绘图,还可以捕获用户的操作,并产生相应的事件. Canvas的用法为:一般在用户自己定制具有GUI功能的类时,可以让该类继承Canvas,这样可以继承Canvas所有功能,然后把其他功能和外观设置所需的代码增加就可以了. 注意:在绘制自定义部件外观时,必须要覆盖paint方法,否则又会被组件重绘.,Checkbox类,产生复选框和单选按钮的类. 复选框:复选框按钮可以处于选中或不选中的状态,它们之间没有制约关系,可以同时选中多个. 单选按钮:也可以处于选中或不选中状态,但是单选按钮组只能选中一个按钮. public Checkbox(String label, boolean state):该构造函数创建的是一个复选框,label是复选框旁边的说明文字,state是复选框是否默认被选中. public Checkbox(String label, boolean state,CheckboxGroup group):因为单选按钮必须是成组出现,所以在用该构造函数创建单选按钮组的时候就在后面加入所属组的参数,这个也表明创建的是单选按钮组.Checkbox

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号