第9章用户图形界面.ppt

上传人:本田雅阁 文档编号:3137752 上传时间:2019-07-16 格式:PPT 页数:52 大小:340.52KB
返回 下载 相关 举报
第9章用户图形界面.ppt_第1页
第1页 / 共52页
第9章用户图形界面.ppt_第2页
第2页 / 共52页
第9章用户图形界面.ppt_第3页
第3页 / 共52页
第9章用户图形界面.ppt_第4页
第4页 / 共52页
第9章用户图形界面.ppt_第5页
第5页 / 共52页
点击查看更多>>
资源描述

《第9章用户图形界面.ppt》由会员分享,可在线阅读,更多相关《第9章用户图形界面.ppt(52页珍藏版)》请在三一文库上搜索。

1、第9章 用户图形界面,雷擎 对外经济贸易大学信息学院,content,9.1 Java图形技术介绍 9.2 Applet基础 9.3 图形设计基础 9.4 Swing容器和组件 实验:用户图形界面,9.1 Java图形技术介绍,Java实现用户图形界面的程序分为两大类。 Application程序:类似于C或其他高级编程语言编写的程序,需要显式使用java引擎启动。前几章的java程序都属于这一类。 Applet程序,小程序:嵌入Web网页的小程序,通过浏览器激活执行。,JFC,Java Foundation Classes(Java基础类)的缩写 是关于GUI 组件和服务的完整集合 作为J

2、2SE 的一个有机部分,主要包含5 个部分 AWT、Java2D、Accessibility、Drag & Drop、Swing,构建窗口程序库,跟踪Java GUI的发展和演化,我们将发现3个主要的构建窗口程序库: AWT Swing SWT(Standard Widget Toolkit) 同时还有第4个库:JFace。其实,JFace不算一个真正的构建窗口程序库,而是在基于SWT之上的一个抽象层。,9.1.1 AWT,AWT(Abstract Windowing Toolkit),中文译为抽象窗口工具包,是Java提供的用来建立和设置Java的图形用户界面的基本工具。 AWT由Java中

3、的java.awt包提供,里面包含了许多可用来建立与平台无关的图形用户界面(GUI)的类,这些类被称为组件(components)。,AWT是Java的平台独立的窗口系统,图形和用户界面器件工具包。 AWT是Java基础类 (JFC)的一部分,为Java程序提供图形用户界面(GUI)的标准API。 AWT可用于Java的applet和applications中。,AWT的特点,AWT组件,在java.awt包里,包括Button、Checkbox、Scrollbar等,都是Component类的子类 大部分含有native code,所以随操作系统平台的不同会显示出不同的样子,而不能进行更改,

4、是重量级组件(heavyweight components) 没有弹性、缺乏效率,AWT支持GUI编程的功能,用户界面组件 事件处理模型 图形和图像工具:包括形状、颜色和字体类 布局管理器:可以进行灵活的窗口布局而与特定窗口的尺寸和屏幕分辨率无关 数据传送类:可以通过本地平台的剪贴板来进行剪切和粘贴,9.1.2 Swing,Swing组件,其名称都是在原来AWT组件名称前加上J,例如JButton、JCheckBox、JScrollbar等,都是JComponent类的子类 Java1.2推出,架构在 AWT 之上,是AWT的扩展而不是取代 完全是由java语言编写的,其外观和功能不依赖于任何

5、由宿主平台的窗口系统所提供的代码,是轻量级组件(lightweight components) 可提供更丰富的视觉感受,被越来越多地使用,2.1.3 SWT/JFace,SWT/JFace直接调用了操作系统的图形库,从而使得Java应用程序的Look & Feel 与操作系统的习惯完全一致 更为重要的是,SWT/JFace采用有限调用本地方法(控件),只有当本地找不到所需要的控件时,才进行模拟。 SWT/JFace的缺点主要在于两点:(1) 不是Java语言标准;(2) 某些平台并不支持。,9.2 Applet基础,Java Applet 一种嵌入HTML文档中的Java程序 与Applica

6、tion相比,Applet具有明显的优点 web浏览器提供了运行Applet所需要的许多功能 Applet是在运行时通过网络从服务器端下载的,因而便于软件的发布和及时更新 Applet也有其局限性, 不能在客户机上读写当地文件 也不能连接除它所在的服务器以外的其它机器,9.2.1 Applet的工作原理,Applet是一种Java的小程序,都由Java类库中的java.apple包中Applet类继承而来。 可以通过java开发工具的appletviewer来运行。Applet 程序离不开使用它的HTML文件。 Applet在网页的HTML代码中使用 和标记来标识。,HTML文件中关于Appl

7、et的信息,这个HTML文件中关于Applet的信息至少应包含以下三点: 字节码文件名(编译后的Java文件,以.class为后缀) 字节码文件的地址 在网页上显示Applet的方式。,Applet,Import java.awt.*; import java.applet.*; public class ThisClass extends Applet /class body Case Study: Applet1.java,Web页的Applet标记, Case Study: Applet1.html,9.2.2 Applet程序开发步骤,applet程序开发主要步骤如下: 选用EDIT或

8、Windows Notepad等编辑工具作为编辑器建立Java applet源程序。 把Applet的源程序转换为字节码文件。 编制使用class 的HTML文件。在HTML文件内放入必要的语句。,创建applet源程序文件,import java.applet.Applet; import java.awt.Graphics; public class HelloWorldApplet extends Applet / 继承Appelet类,这是Appelet Java程序的特点 public void paint(Graphics g) g.drawString(“Hello World!

9、“, 5, 35); ,创建HTML文件, HelloWorld! Applet ,9.2.3 Applet执行方式,一个Java Application必须含有一个main()方法,作为应用程序执行入口点。 由于一个网页在浏览器中显示时可能会发生各种情况,对于每种情况,applet都必须作出响应,所以,针对每种情况,Applet类都有一个响应的入口点,使之运行。,Applet实现以及生命周期,applet都继承自java.applet.Applet类。 每个applet都有一个主程序类, 之前必须加上public。 applet将覆盖一个或者多个方法以实现它的行为。 类Applet定义了当a

10、pplet生命周期里的主要事件发生时java系统调用的过程,Applet类的主要方法,Java.applet.Applet,public void init(),public void destroy(),public void start(),public void stop(),public void paint(Graphics g),applet生命周期图示,Applet类提供了四个主要的方法:init、start、stop和destroy,它们构成了创建任何Applet的框架,并实现了一个Applet从诞生、执行到停止、消亡的生命周期,生命周期方法,init( ) 每次applet被

11、载入时 start( ) 当applet被载入后或者用户重新访问包含小应用程序的页面时(刷新,返回) stop( ) 当applet离开applet所在的页面时或者退出浏览器时 destroy( ) 进行最后的清理工作 Case Study: Applet2.java,9.3 图形设计基础,9.3.1 布局管理器,Java的GUI界面定义是由AWT类包和Swing类包来完成的。它在布局管理上采用了容器和布局管理分离的方案。 对于布局的管理交给专门的布局管理器类(LayoutManager)来完成。,Java几个常用的布局管理器类,Java几个常用的布局管理器类,9.3.2 事件处理机制,GUI

12、是由事件驱动的,常见的事件包括: 移动鼠标 单双击鼠标各个按钮 单击按钮 在文本字段输入 在菜单中选择菜单项 在组合框中选择、单选和多选 拖动滚动条 关闭窗口 ,委托事件模型-原理,事件机制是一种处理世界的方式和方法。事件机制的特点在于“等待”,等待有事情发生,然后处理。,事件监听器(Listener),事件处理机制的三个部分,编写事件处理程序时,要注意三个概念 事件源 与用户进行交互的GUI组件,表示事件来自于哪个组件或对象 比如要对按钮被按下这个事件编写处理程序,按钮就是事件源 事件监听器 负责监听事件并做出响应 一旦它监视到事件发生,就会自动调用相应的事件处理程序作出响应 事件对象 封装

13、了有关已发生的事件的信息 例如按钮被按下就是一个要被处理的事件,当用户按下按钮时,就会产生一个事件对象。事件对象中包含事件的相关信息和事件源,三种实现事件处理的方法,实现事件监听器接口 这种方法需要实现接口中所有的方法,对我们不需要进行处理的事件方法,也要列出来,其方法体使用一对空的花括号 继承事件监听器适配器类 只需要重写我们感兴趣的事件 使用匿名内部类 特别适用于已经继承了某个父类(例如Applet程序,主类必须继承JApplet类或Applet类),则根据java语法规则,就不能再继承适配器类的情况,而且使用这种方法程序看起来会比较清楚明了,事件处理的通用编写流程,编写一个实现了XxxL

14、istener接口的事件监听器类; 在XxxListener类中用于处理该事件情况的方法中,编写处理代码; 调用组件的addXxxListener方法,将类XxxListener创建的实例对象注册到GUI组件上。,Capturing Events (Button ),实现步骤 Implements ActionListener public class Bt extends Frame implements ActionListener addActionListener注册 bnt1.addActionListener(ActionListener a); 实现public void act

15、ionPerformed(ActionEvent e),Capturing Events (TextArea),实现步骤 Impletments TextListener addTextListener注册 实现public void textValueChanged(TextEvent e),9.4 Swing容器和组件,Swing是AWT的扩展,它提供了许多新的图形界面组件。 除了拥有与AWT类似的基本组件外,还增加了一个丰富的高层组件集合,如表格(JTable)、树(JTree)。,Swing的特点和概念,Swing GUI 组件 javax.swing包 源于AWT(package j

16、ava.awt)的组件,Swing组件,其名称都是在原来AWT组件名称前加上J,例如JButton、JCheckBox、JScrollbar等,都是JComponent类的子类 Java1.2推出,架构在 AWT 之上,是AWT的扩展而不是取代 完全是由java语言编写的,其外观和功能不依赖于任何由宿主平台的窗口系统所提供的代码,是轻量级组件(lightweight components) 可提供更丰富的视觉感受,被越来越多地使用,9.4.1 组件的分类,通常将javax.swing包里的Swing组件归为三个层次 顶层容器: JFrame ,JDialog ,JApplet 中间层容器: J

17、Panel,JScrollPane,JSplitPane,JTabbedPane,JToolBar 特殊用途的:JInternalFrame,JRootPane,容器层次,原子组件 显示不可编辑信息的JLabel、JProgressBar、JToolTip 有控制功能、可以用来输入信息的JButton、JCheckBox、JRadioButton、JComboBox、JList、JMenu、JSlider、JSpinner、JTexComponent等 能提供格式化的信息并允许用户选择的JColorChooser、JFileChooser、JTable、JTree,9.4.2 第一个Swing

18、程序,import javax.swing.*; public class HelloWorldSwing /* * Create the GUI and show it. For thread safety, this method should be * invoked from the event-dispatching thread. */ private static void createAndShowGUI() /确保有一个很好的窗口修饰 JFrame.setDefaultLookAndFeelDecorated(true); /创建并设置窗口 JFrame frame = ne

19、w JFrame(“HelloWorldSwing“); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);,/增加无处不在的 “Hello World“标签 JLabel label = new JLabel(“Hello World“); frame.getContentPane().add(label); /显示窗口 frame.pack(); frame.setVisible(true); public static void main(String args) / Schedule a job for the event-dis

20、patching thread: / creating and showing this applications GUI. javax.swing.SwingUtilities.invokeLater(new Runnable() public void run() createAndShowGUI(); ); ,程序说明,这个Swing程序虽然简单,但是代码示范在每个Swing应用程序的基本代码,其中包括: (1)导入相关的包。 (2)设置一个顶层容器。 (3)显示容器。 (4)使其线程安全。,9.4.3 按钮组件,Swing按钮可以显示文字和图像,每个按钮都有一个它自己的文字,还有相对应

21、得图标。在每个按钮的文本中带下划线的字母表示的是通过键盘选择的快捷键,用户可以点击按Alt键和这个字母键,9.4.4 标签组件,Jlabel类,显示不可选择的文字和图像,这就是标签组件,9.4.5 菜单组件,一个菜单往往会出现菜单栏或弹出菜单中。一个菜单栏包含一个或多个菜单,并且通常通常是沿着一个窗口的顶部。一个弹出菜单的菜单一般是不可见的,直到用户在弹出组件上有了一个鼠标操作(如按下鼠标右键),这时弹出菜单将显示在光标下。,小结,9.1 Java图形技术介绍 9.2 Applet基础 9.3 图形设计基础 9.4 Swing容器和组件,知识点提示:,理解 Java图形界面的几种技术及区别 容器、组件和布局的概念 事件处理机制 掌握继承 使用Swing编写简单的图形界面 布局的设置 JButton事件的处理,实验:用户图形界面,实验12:计算器,End of Chapter 9,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1