图形用户界面 讲稿.ppt





《图形用户界面 讲稿.ppt》由会员分享,可在线阅读,更多相关《图形用户界面 讲稿.ppt(61页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、图形用户界面 第一页,讲稿共六十一页哦6.1 GUI编程基础 n图形用户界面(GUI)使用户可以和程序进行可视化交互。无论是程序的设计者还是使用者都可以通过图形用户界面明显“看到”和“感觉”到程序的存在。图形用户界面为不同的应用程序提供了感觉上一致的用户界面组件,这样使用户在记住执行功能的复杂命令上花费较少的时间,而花更多的时间通过有效的方式来使用程序。n一个设计良好的软件通常包括业务层的逻辑设计和表现层的用户界面设计两大部分。因此,好的用户界面设计对一个系统的成功是至关重要的。一个使用起来困难的界面,轻者会造成用户操作不便;重者引起用户反感,不管系统的功能如何而拒绝使用该软件系统。如果信息的
2、表达方式是混乱的或是容易误解的,那么用户可能会误解信息的涵义。他们进行的一系列操作就有可能破坏数据,甚至导致灾难性的系统失败。第二页,讲稿共六十一页哦6.1.1 图形用户界面 n计算机操作界面的发展从单调的命令行形式到图形化窗口形式,逐步形成了现在计算机用户认可的图形用户界面主要特征,主要集中在窗口、图标、菜单、指点、图形等方面。n用户界面设计的一般性原则包括:用户熟悉、一致性、意外最小化、可恢复性、用户指南、用户差异性等。n图形用户界面包含了许多独立的显示元素,供用户交互。它们由程序中的GUI组件组成。GUI组件是用户通过键盘或鼠标进行交互的对象,菜单、按钮、文本域、标签和下拉列表框等GUI
3、组件是图形用户界面的常用部分。第三页,讲稿共六十一页哦AWT和Swingo1.AWToAWT(Abstract Window Toolkit)是一个独立平台的窗口工具组件集,它依赖于对等组件(Peer),而对等组件是一个本地GUI组件,由AWT类管理。AWT的作用是给用户提供基本的界面组件,如按钮、列表框、菜单等。oAWT最初只包括与本地对等组件相关联的组件,称为重量组件(Heavyweight Component),这些组件在它们自己的本地不透明窗口中绘制,在改变其默认行为时,不可以为其扩展子类,此外,它们必须是矩形的,且不能有透明背景。第四页,讲稿共六十一页哦2.SwingoSwing是建
4、立在AWT基础之上的,它利用了AWT的底层组件,包括图形、颜色、字体、工具包和布局管理器等。使用AWT最好的部分来建立一个新的轻量组件集,而丢弃了AWT中有问题的重量组件部分。o通过引入新特性和丰富的功能,Swing提供了比AWT更全面的组件集合。Swing API是围绕实现AWT各个部分的API构建的,这保证了所有早期的AWT组件仍然可以使用。第五页,讲稿共六十一页哦11.2 常用组件(AWT)ojava.awt中的各个类 java.lang.ObjectColor 颜色Font 字体Component组件BorderLayout,FlowLayout CardLayout,GridBagL
5、ayout布局类CheckboxGroup复选框组Image 图象AWTEvent事件MenuComponent菜单组件Graphics图形第六页,讲稿共六十一页哦 图形组件类的继承关系ObjectComponentButtonCanvasChoiceCheckboxLabelListScrollbarTextComponentContainerWindowPaneScrollPaneDialogFileDialogFrameTextAreaTextField第七页,讲稿共六十一页哦6.1.2 Swing和ATW nJava类库中的ATW和Swing包提供了大量的可视化组件,AWT组件是建立在
6、对等模型的基础上的重量级组件;而Swing组件则是用纯Java编写的轻量级组件。nSwing带来了以下优势:o更丰富、更方便的用户界面元素集。o对底层平台的依赖更少,因此和平台有关的bug也少得多。o给不同平台上的用户一致的感觉。n AWT与Swing的结构关系以及Swing的组件关系 第八页,讲稿共六十一页哦6.1.3 窗体容器 n窗体(也叫Windows)是显示在用户终端桌面上的图形元素。窗体可以充当各种组件和控件的一个容器。Java中的窗体类容器可能是一个对话框(Dialog)、框架(Frame)或者是一个面板(Panel)等。nJava中的主要窗体类容器如下:oJApplet 通过启用
7、Java 的Web浏览器或其他Apple 查看器运行的程序。oJDialog 汇集用户输入的模式或无模式窗口。oJFrame 顶层应用程序窗口。oJPanel 容纳部分界面的小型容器。反过来,该容器又可用于其他任何容器中,如 JFrame、JPanel、JApplet或JDialog组件。oAWT窗体窗体 基于AWT的可视窗体。AWT窗体包括Applet、对话框、框架和面板。AWT与Swing的结构关系以及Swing的组件关系 第九页,讲稿共六十一页哦6.1.3 窗体容器 n框架(JFrame)是种常用的顶层容器。框架的内部结构比较复杂,它可以划分为4种窗格:根窗格(Root Pane)、布局
8、窗格(Layered Pane)、内容窗格(Content Pane)和玻璃窗格(Glass Pane)。n对JFrame添加组件有两种方式:1、用getContentPane方法获得JFrame的内容窗格,再对其加入组件;2、建立一个JPanel之类的中间容器,把组件添加到容器中,用setContentPane方法把该容器置为JFrame的内容窗格。n面板(JPanel)有一个能够在上面进行绘制的表面,而且其本身也是容器。因此,它除了可以绘制图形、文字,还能容纳按钮、滑动条等其他用户界面元素。TitleJFrameMenuRoot PaneLayered PaneContent PaneCl
9、ass PaneMenuBar1、用getContentPane方法获得JFrame的内容窗格,再对其加入组件:frame.getContentPane().add(childComponent);2、建立一个JPanel之类的中间容器,把组件添加到容器中,用setContentPane方法把该容器置为JFrame的内容窗格:JPanel contentPane=new JPanel();/把其它组件添加到JPanel中;frame.setContentPane(contentPane);/把contentPane对象设置成为frame的内容窗格第十页,讲稿共六十一页哦创建一个简单的JFram
10、e主窗体import javax.swing.*;import java.awt.*;public class SimpleFrame extends JFrame public SimpleFrame(int width,int height)setSize(width,height);setTitle(Frame主窗体);Toolkit kit=Toolkit.getDefaultToolkit();Dimension screenSize=kit.getScreenSize();/获取当前屏幕的尺寸 int x=(screenSize.width-width)/2;int y=(scre
11、enSize.height-height)/2;setLocation(x,y);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);public static void main(String args)SimpleFrame frame=new SimpleFrame(400,300);frame.setVisible(true);第十一页,讲稿共六十一页哦o为了在面板中绘制文字,我们需要定义一个扩展JPanel的新派生类,并覆盖paintComponent 方法。paintComponent 方法实际上定义在JComponent中,这个类是所有非
12、窗口swing组件的基类。该方法有一个Graphics类型的参数。Graphics对象存储了一个用于绘制图形和文本的设计集合,包括字体和颜色等。JAVA中的所有绘制都必须使用Graphics对象。它拥有绘制图案,图象和文本的方法。o不管什么原因导致窗口需要重新绘制,事件处理器都会通知组件。它会引起所有组件的paintComponent方法执行。这就是说,该方法会自动调用,我们不必干涉这个自动过程。o导致窗口重新绘制,引发 paintComponent 方法的原因很多,例如:用户缩放窗口,窗口被遮盖,窗口重新显示等 第十二页,讲稿共六十一页哦 如何向面板添加内容并置于框架中如何向面板添加内容并置
13、于框架中oimport java.awt.*;oimport java.io.*;oimport javax.swing.*;oimport javax.imageio.*;oimport .*;opublic class PanelFrame extends SimpleFrame o /*Creates a new instance of PanelFrame*/o public PanelFrame(int width,int height)o super(width,height);o o public static void main(String args)o PanelFrame
14、 frame=new PanelFrame(300,200);o ContentPanel contentPanel=new ContentPanel();o /把其它组件添加到面板中;o contentPanel.add(new JButton(OK);o frame.setContentPane(contentPanel);o frame.setVisible(true);o ooclass ContentPanel extends JPanelo /在面板中绘制图文;o public void paintComponent(Graphics g)o super.paintComponen
15、t(g);o g.drawOval(120,60,150,70);/绘制一个椭圆o tryo g.drawString(这是一个面板!,160,100);/绘制一行文字o Image image=ImageIO.read(new URL(urlname);o g.drawImage(image,30,30,null);/绘制一幅图片o catch(IOException e)o g.drawString(加载图形失败!,100,100);o o o String urlname=http:/www.liu- java.awt.Window是AWT窗口组件中最基本的组件,它实际上是Frame与D
16、ialog组件的超类。窗口窗口组件没有边界、标题栏与菜单栏,而且大小不可以调组件没有边界、标题栏与菜单栏,而且大小不可以调整整。常用窗口实现的界面包括:产品信息的封面产品信息的封面(如Outlook等软件启动时,显示在屏幕中间且几秒后自动消失的封面窗口),提示帮助信息提示帮助信息(如使用金山词霸等软件时,移动鼠标到某个英文单词上时自动弹出的解释信息)等。AWT窗体组件第十四页,讲稿共六十一页哦o例 FrameDemo.javaoimport java.awt.*;opublic class SplashDemo extends Frameo Window window;opublic stat
17、ic void main(String args)oSplashDemo frame=new SplashDemo();o public SplashDemo()owindow=new Window(this);下面我们通过一个例子来学习如何使用窗口类:第十五页,讲稿共六十一页哦o Dimension scmSize=Toolkit.getDefaultToolkit().getScreenSize();oint width=300;o int height=200;owindow.setLocation(scmSize.width/2-(width/2),scmSize.height/2-(
18、height/2);owindow.setSize(width,height);owindow.show();续1第十六页,讲稿共六十一页哦owindow.toFront();o try Thread.currentThread().sleep(3000);ocatch(Exception e)e.printStackTrace();o window.dispose();oSystem.exit(0);oo 这是个使用Window的窗口在屏幕上显示一个矩形窗口类的实例,这个窗口没有边界、标题栏与菜单栏,在屏幕上停留3秒后自动消失。如果在窗口中加载一幅图片,则能实现一个类似Outlook的封面窗
19、口(在窗口中加载图片的方法我们将在第9章中学习)。续2第十七页,讲稿共六十一页哦o 程序中用到了工具类的方法Toolkit.getDefaultToolkit().getScreenSize()。Toolkit类是一个包含许多有用的本地工具方法的类。getScreenSize()方法的作用是取得显示器的像素尺寸。o 程序的运行结果如图所示。续3第十八页,讲稿共六十一页哦续4第十九页,讲稿共六十一页哦o java.awt.Frame是Window的一个子类,它它是带有标题栏和边界的窗口,而且允许调整大小是带有标题栏和边界的窗口,而且允许调整大小。另外,用户还可以为框架附加一个菜单栏。用户在程序设
20、计过程中,当程序窗口需要图表化或者需要包含菜单栏时,则可以选择使用框架组件。o 构造一个框架后,可可以以用用add()方方法法来来给给框框 架架 添添 加加 组组 件件。框框 架架 的的 缺缺 省省 布布 局局 管管 理理 器器 属属 性性 是是BorderLayout。可可以以用用setLayout()方方式式来来改改变变布局管理器属性。布局管理器属性。框架(Frame)第二十页,讲稿共六十一页哦o 框架类中的Frame(String)构造方法创建一个由String规定标题的新的不可见的框架对象。o 例 FrameDemo.javao import java.awt.*;opublic cl
21、ass FrameDemo extends Frameopublic FrameDemo(String title)o super(title);o public static void main(String agrs)oFrameDemo frame=new FrameDemo(Demo Frame);续1第二十一页,讲稿共六十一页哦o frame.setLocation(100,100);oframe.setSize(500,200);oframe.setVisible(true);o o 程序的运行结果如图所示,它是一个具有标题、大小及背景颜色的框架。续2第二十二页,讲稿共六十一页哦图
22、 续3第二十三页,讲稿共六十一页哦o java.awt.Dialog也是Window的扩展类。与框架相相同同的是,对对话话框框也也拥拥有有边边界界与与标标题题栏栏,而而且且也也可可以以调调整整大大小小;而与框架不不同同的是,对对话话框框不不支支持持附附加加菜菜单单栏栏,而而且且对对话话框框可可以以模模式式化化属属性性设设置置,这是窗口和框架都不允许的。因此,如果用户在程序设计过程中需要创建一个临时窗口与用户交换信息时,使用模式对话框是最方便的。另外,AWT中还提供了Dialog类的一个常用的扩展类FileDialog(文件对话框)。它可以为用户选择一个待打开或保存的文件。对话框(Dialog)
23、第二十四页,讲稿共六十一页哦o 可以说对话框是介于窗口和框架之间的,对话框和框架相比各有特色。我们来看一个典型的对话框的例子。o例 DialogDemo.javaoimport java.awt.*;opublic class DialogDemooopublic static void main(String agrs)oFrame frame=new Frame();续1第二十五页,讲稿共六十一页哦oDialog dialog=new Dialog(frame,Demo Dialog,false);o dialog.setLocation(100,100);o dialog.setSize
24、(500,100);o dialog.setVisible(true);oo程序运行结果如下图所示。续2第二十六页,讲稿共六十一页哦续3第二十七页,讲稿共六十一页哦o 文件对话框是文件选择设备的一个实现。它有自己的自由窗口以及窗口元素,并且允许用户浏览文件系统,以及为以后的操作选择一个特定的文件。例如:o 例 FileDialogDemo.javao import java.awt.*;o public class FileDialogDemoo public static void main(String args)o Frame parentFrame=new Frame();续4第二十八
25、页,讲稿共六十一页哦oFileDialog d=new FileDialog(parentFrame,FileDialog);od.setVisible(true);/block here until OK selected oString fname=d.getFile();oo程序的运行结果如下图所示。续5第二十九页,讲稿共六十一页哦图 8.5 续6第三十页,讲稿共六十一页哦o 通常情况下,并不需要处理FileDialog的事件。上例中,调用setVisible(true)将将阻阻塞塞事事件件,直至用户选择OK,这时,对话框会请求用户选择文件名,这个信息将作为一个String类型返回。续7
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图形用户界面 讲稿 图形 用户界面

限制150内