《第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 组件和服务的完整集合作为J2SE 的一个有机部
2、分,主要包含5 个部分AWT、Java2D、Accessibility、Drag&Drop、Swing,构建窗口程序库,跟踪Java GUI的发展和演化,我们将发现3个主要的构建窗口程序库:AWTSwingSWT(Standard Widget Toolkit)同时还有第4个库:JFace。其实,JFace不算一个真正的构建窗口程序库,而是在基于SWT之上的一个抽象层。,9.1.1 AWT,AWT(Abstract Windowing Toolkit),中文译为抽象窗口工具包,是Java提供的用来建立和设置Java的图形用户界面的基本工具。AWT由Java中的java.awt包提供,里面包含了
3、许多可用来建立与平台无关的图形用户界面(GUI)的类,这些类被称为组件(components)。,AWT是Java的平台独立的窗口系统,图形和用户界面器件工具包。AWT是Java基础类(JFC)的一部分,为Java程序提供图形用户界面(GUI)的标准API。AWT可用于Java的applet和applications中。,AWT的特点,AWT组件,在java.awt包里,包括Button、Checkbox、Scrollbar等,都是Component类的子类大部分含有native code,所以随操作系统平台的不同会显示出不同的样子,而不能进行更改,是重量级组件(heavyweight com
4、ponents)没有弹性、缺乏效率,AWT支持GUI编程的功能,用户界面组件事件处理模型图形和图像工具:包括形状、颜色和字体类布局管理器:可以进行灵活的窗口布局而与特定窗口的尺寸和屏幕分辨率无关数据传送类:可以通过本地平台的剪贴板来进行剪切和粘贴,9.1.2 Swing,Swing组件,其名称都是在原来AWT组件名称前加上J,例如JButton、JCheckBox、JScrollbar等,都是JComponent类的子类Java1.2推出,架构在 AWT 之上,是AWT的扩展而不是取代完全是由java语言编写的,其外观和功能不依赖于任何由宿主平台的窗口系统所提供的代码,是轻量级组件(light
5、weight 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程序与Application相比,Applet具有明显的优点web浏览器提供了运行Applet所
6、需要的许多功能Applet是在运行时通过网络从服务器端下载的,因而便于软件的发布和及时更新Applet也有其局限性,不能在客户机上读写当地文件也不能连接除它所在的服务器以外的其它机器,9.2.1 Applet的工作原理,Applet是一种Java的小程序,都由Java类库中的java.apple包中Applet类继承而来。可以通过java开发工具的appletviewer来运行。Applet 程序离不开使用它的HTML文件。Applet在网页的HTML代码中使用 和标记来标识。,HTML文件中关于Applet的信息,这个HTML文件中关于Applet的信息至少应包含以下三点:字节码文件名(编译
7、后的Java文件,以.class为后缀)字节码文件的地址在网页上显示Applet的方式。,Applet,Import java.awt.*;import java.applet.*;public class ThisClass extends Applet/class bodyCase Study:Applet1.java,Web页的Applet标记,Case Study:Applet1.html,9.2.2 Applet程序开发步骤,applet程序开发主要步骤如下:选用EDIT或Windows Notepad等编辑工具作为编辑器建立Java applet源程序。把Applet的源程序转换为
8、字节码文件。编制使用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!,5,35);,创建HTML文件,HelloWorld!Applet,9.2.3 Applet执行方式,一个Java Applic
9、ation必须含有一个main()方法,作为应用程序执行入口点。由于一个网页在浏览器中显示时可能会发生各种情况,对于每种情况,applet都必须作出响应,所以,针对每种情况,Applet类都有一个响应的入口点,使之运行。,Applet实现以及生命周期,applet都继承自java.applet.Applet类。每个applet都有一个主程序类,之前必须加上public。applet将覆盖一个或者多个方法以实现它的行为。类Applet定义了当applet生命周期里的主要事件发生时java系统调用的过程,Applet类的主要方法,Java.applet.Applet,public void ini
10、t(),public void destroy(),public void start(),public void stop(),public void paint(Graphics g),applet生命周期图示,Applet类提供了四个主要的方法:init、start、stop和destroy,它们构成了创建任何Applet的框架,并实现了一个Applet从诞生、执行到停止、消亡的生命周期,生命周期方法,init()每次applet被载入时start()当applet被载入后或者用户重新访问包含小应用程序的页面时(刷新,返回)stop()当applet离开applet所在的页面时或者退出浏
11、览器时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语法规则,就不能再继承适配器类的情况,而且使用这种方法程序看起来会比较清楚明了,事件处理的通用编写流程,编写一个实现了XxxListener接口的事件监听器类;在XxxListener类中用于处理该事件情况的方法中,编写处理代码;调用组件的addXxxListener方法,将类XxxListener创建的实例对象注册到GUI组件上。,Capturing
14、 Events(Button),实现步骤Implements ActionListenerpublic class Bt extends Frame implements ActionListeneraddActionListener注册bnt1.addActionListener(ActionListener a);实现public void actionPerformed(ActionEvent e),Capturing Events(TextArea),实现步骤Impletments TextListeneraddTextListener注册实现public void textValue
15、Changed(TextEvent e),9.4 Swing容器和组件,Swing是AWT的扩展,它提供了许多新的图形界面组件。除了拥有与AWT类似的基本组件外,还增加了一个丰富的高层组件集合,如表格(JTable)、树(JTree)。,Swing的特点和概念,Swing GUI 组件javax.swing包源于AWT(package java.awt)的组件,Swing组件,其名称都是在原来AWT组件名称前加上J,例如JButton、JCheckBox、JScrollbar等,都是JComponent类的子类Java1.2推出,架构在 AWT 之上,是AWT的扩展而不是取代完全是由java语
16、言编写的,其外观和功能不依赖于任何由宿主平台的窗口系统所提供的代码,是轻量级组件(lightweight components)可提供更丰富的视觉感受,被越来越多地使用,9.4.1 组件的分类,通常将javax.swing包里的Swing组件归为三个层次顶层容器:JFrame,JDialog,JApplet 中间层容器:JPanel,JScrollPane,JSplitPane,JTabbedPane,JToolBar特殊用途的:JInternalFrame,JRootPane,容器层次,原子组件显示不可编辑信息的JLabel、JProgressBar、JToolTip有控制功能、可以用来输入
17、信息的JButton、JCheckBox、JRadioButton、JComboBox、JList、JMenu、JSlider、JSpinner、JTexComponent等能提供格式化的信息并允许用户选择的JColorChooser、JFileChooser、JTable、JTree,9.4.2 第一个Swing程序,import javax.swing.*;public class HelloWorldSwing/*Create the GUI and show it.For thread safety,this method should be*invoked from the even
18、t-dispatching thread.*/private static void createAndShowGUI()/确保有一个很好的窗口修饰JFrame.setDefaultLookAndFeelDecorated(true);/创建并设置窗口JFrame frame=new JFrame(HelloWorldSwing);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);,/增加无处不在的 Hello World标签JLabel label=new JLabel(Hello World);frame.getContentPane
19、().add(label);/显示窗口frame.pack();frame.setVisible(true);public static void main(String args)/Schedule a job for the event-dispatching thread:/creating and showing this applications GUI.javax.swing.SwingUtilities.invokeLater(new Runnable()public void run()createAndShowGUI(););,程序说明,这个Swing程序虽然简单,但是代码示
20、范在每个Swing应用程序的基本代码,其中包括:(1)导入相关的包。(2)设置一个顶层容器。(3)显示容器。(4)使其线程安全。,9.4.3 按钮组件,Swing按钮可以显示文字和图像,每个按钮都有一个它自己的文字,还有相对应得图标。在每个按钮的文本中带下划线的字母表示的是通过键盘选择的快捷键,用户可以点击按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,