JAVA程序设计教程 教学课件 ppt 作者 赵莉 第7-11章 第7章

上传人:E**** 文档编号:89347048 上传时间:2019-05-23 格式:PPT 页数:194 大小:1.52MB
返回 下载 相关 举报
JAVA程序设计教程 教学课件 ppt 作者 赵莉 第7-11章 第7章_第1页
第1页 / 共194页
JAVA程序设计教程 教学课件 ppt 作者 赵莉 第7-11章 第7章_第2页
第2页 / 共194页
JAVA程序设计教程 教学课件 ppt 作者 赵莉 第7-11章 第7章_第3页
第3页 / 共194页
JAVA程序设计教程 教学课件 ppt 作者 赵莉 第7-11章 第7章_第4页
第4页 / 共194页
JAVA程序设计教程 教学课件 ppt 作者 赵莉 第7-11章 第7章_第5页
第5页 / 共194页
点击查看更多>>
资源描述

《JAVA程序设计教程 教学课件 ppt 作者 赵莉 第7-11章 第7章》由会员分享,可在线阅读,更多相关《JAVA程序设计教程 教学课件 ppt 作者 赵莉 第7-11章 第7章(194页珍藏版)》请在金锄头文库上搜索。

1、,第7章 图形用户界面,7.1 Java图形用户界面 7.2 事件处理 7.3 布局管理 7.4 Swing组件 7.5 图形处理 本章小结 习题,7.1 Java图形用户界面 用户界面(UI)是程序同用户之间的所有交互的总称,它不仅包括用户所见到的部分,而且包括用户所听到的部分和所感觉到的部分。Java语言提供了丰富的用户界面功能支持,其中图形用户界面(GUI)是Java UI的核心,也基本上是所有Java 应用程序设计的一个重要基础。,7.1.1 AWT组件概述 AWT(Abstract Windows Toolkit)是抽象窗口程序包。Java从JDK 1.0开始就提供了有关图形用户界面

2、设计的基础包。在AWT中,图形用户界面设计中经常用到的按钮、滚动条、菜单和界面容器等都封装成独立的组件,并提供了委托事件处理机制。通过使用AWT提供的基本GUI组件和事件处理机制,可以创建具有丰富界面效果和交互功能的Java程序。 图7-1表示了所有AWT组件类(Component)的类层次结构。除了与菜单有关的组件类以外,所有组件类都是AWT Component 类的子类,菜单类则是AWT MenuComponent类的子类。,图7-1 AWT类层次结构图,7.1.2 Applet程序 根据结构组成和运行环境不同,Java应用程序分为两类:Java应用程序(Java Application)

3、和Java小程序(Java Applet)。Java应用程序是完整的程序,需要独立的解释器来解释执行;而Java小程序则是嵌在HTML网页中的非独立程序,由Web浏览器内部包含的Java解释器解释执行。,在早期的Java中,Applet通过java.applet.Applet类结合java.awt包中的图形组件实现,但功能有限而且不符合面向对象的思想。Java2中用javax.swing包取代了java.awt包,并提供了类Applet的子类Japplet来实现Applet,以支持javax.swing包中的图形组件。 下面的例子演示了一个简单的Applet程序的编写。,【示例7-1】 Sim

4、pleApplet.java。 import java.awt.*; import java.applet.*; public class SimpleApplet extends Applet public void paint(Graphics g) g.drawString(“Hello,World!”,20,20); 程序运行结果如图7-2所示。,图7-2 【示例7-1】程序运行结果,7.2 事 件 处 理 事件处理技术是用户界面设计中一个十分重要的技术, 事件处理是否高效将直接影响到GUI程序设计的灵活性以及设计出的界面程序的功能和性能。AWT 1.1中引入了一个新的事件处理模型委托

5、事件处理模型。这一事件处理模型具有很好的结构,并提供了灵活而强大的事件处理能力。,7.2.1 AWT的委托事件模型 在新的事件处理模型中,事件由事件源(source)产生,一个事件源上可以注册一个或多个监听器(listeners),它们可以响应特定的事件。这个模型又称为委托模型(delegation),因为程序员可以将事件处理的权利委托给任何一个实现了相应反应器接口的对象。另外,新的事件处理模型不仅可以处理事件,而且还可以生成事件。,1. AWT事件处理的基本流程 在每个含有事件句柄的程序中,一般包含如下代码: (1) 在事件句柄的class语句中,定义实现监听器接口的类(或者扩充一个已实现了

6、监听器接口的类),例如: public class MyClass implements ActionListener (2) 将事件处理类的一个实例注册成一个或多个组件的反应器,例如: someComponent .addActionListener (instanceOfMyClass);,(3) 反应器接口方法的实现,例如: public void actionPerformed(ActionEvent e) ./ 响应事件的代码 下面的示例当程序运行时显示一个按钮,用户单击它时,就发出声音。,【示例7-2】 BeeperDemo.java。 import java .applet .A

7、pplet; import java .awt .Button; import java .awt .Toolkit; import java .awt .BorderLayout; import java .awt .event .ActionListener; import java .awt .event .ActionEvent; /实现了鼠标事件监听接口,public class BeeperDemo extends Applet implements ActionListener Button button; public void init( ) setLayout(new Bo

8、rderLayout( ); button = new Button(“Click Me”); add(“Center”,button); /注册事件监听器 button .addActionListener(this); /事件响应过程,public void actionPerformed(ActionEvent e) Toolkit .getDefaultToolkit( ) .beep( ); 程序运行结果如图7-3所示。,图7-3 【示例7-2】程序运行结果,上面的例子中,BeeperDemo类实现了ActionListener接口,它包括一个方法actionPerformed,所以

9、Beeper 对象可以注册成为按钮产生的动作事件(action event)的反应器,注册之后,每次单击按钮时,就会调用BeeperDemo的action Performed方法处理事件。,2. 处理其他事件类型的例子 下面的例子当Applet运行后显示一个矩形边框和一个文本区。只要在矩形边框内产生一个鼠标事件(对鼠标进行操作,如单击、按键、释放按键、进入、退出等),文本区就显示一个字符串描述这个产生的事件。,【示例7-3】 MouseDemo.java。 import java .applet .Applet; import java .awt .* ; import java .awt .

10、event .MouseListener; import java .awt .event .MouseEvent; public class MouseDemo extends Applet implements MouseListener BlankArea blankArea; TextArea textArea;,static final int maxInt = java.lang.Integer.MAX_VALUE; public void init( ) GridBagLayout gridbag = new GridBagLayout( ); GridBagConstraint

11、s c = new GridBagConstraints( ); setLayout(gridbag); c .fill = GridBagConstraints .BOTH; c .gridwidth = GridBagConstraints .REMAINDER; c .weightx = 1.0; c .weighty = 1.0; c .insets = new Insets(1,1,1,1);,blankArea = new BlankArea( ); gridbag .setConstraints(blankArea,c); add(blankArea); c .insets =

12、new Insets(0,0,0,0); textArea = new TextArea(5,20); textArea .setEditable(false); gridbag .setConstraints(textArea,c); add(textArea); blankArea .addMouseListener(this); / 注册鼠标事件反应器 addMouseListener(this); ,public void mousePressed(MouseEvent e) saySomething(“Mouse button press“,e); public void mouse

13、Released(MouseEvent e) saySomething(“Mouse button release“,e); public void mouseEntered(MouseEvent e) saySomething(“Cursor enter“,e); public void mouseExited(MouseEvent e) saySomething(“Cursor exit“,e); ,public void mouseClicked(MouseEvent e) saySomething(“Mouse button click“,e); void saySomething(S

14、tring eventDescription,MouseEvent e) textArea.append(eventDescription+“detected on “ + e .getComponent( ) .getClass( ) .getName( )+“.n“); textArea .setCaretPosition(maxInt); class BlankArea extends Canvas Dimension minSize = new Dimension(100,100); ,public Dimension getMinimumSize( ) return minSize;

15、 public Dimension getPreferredSize( ) return minSize; public void paint(Graphics g) Dimension size = getSize(); g .drawRect(0,0,size .width -1,size .height -1); 程序运行结果如图7-4所示。,图7-4 【示例7-3】程序运行结果,7.2.2 AWTEvent事件类 1. 基本事件类 AWT事件基本上可以分为两类:低层事件和语义事件。低层事件是与窗口系统的显示和低层输入相关的事件。例如,鼠标事件和按键事件都属于低层事件,因为它们直接来自用

16、户输入。组件事件、容器事件、输入焦点事件和窗口事件也都是低层事件。组件事件反映组件的位置、尺寸和可视性的改变;容器事件通知程序容器加入或移出了组件;输入焦点事件通知用户组件获得或失去键盘输入焦点从键盘接收按键的能力;窗口事件反映各种窗口(如Dialog或Frame)的基本状态。,鼠标事件又分成两组:鼠标移动事件和所有其他鼠标事件,这是因为鼠标移动事件产生的频率很高,需要占用大量系统资源,将一般的鼠标事件同鼠标移动事件分开处理可以提高系统性能。,语义事件包括动作事件(action event)、调整事件(adjustment event)、项事件(item event)和文本事件(text event),这些事件都是在组件特定的交互过程中产生的。例

展开阅读全文
相关资源
相关搜索

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

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