好文档 - 专业文书写作范文服务资料分享网站

实验6-图形化用户界面编程

天下 分享 时间: 加入收藏 我要投稿 点赞

实验6 图形用户界面编程

6.1 实验目的

(1) 掌握图形用户界面的布局设置;

(2) 掌握事件驱动编程的特点,如何区分事件源。 (3) 掌握文本框、文本域、标签、按钮等部件的操作方法。

6.2 知识要点

6.2.1 awt包简介

(1)java.awt包可用于编写Java Application和Applet的图形界面。 (2) AWT组件层次关系见图11-1,所有的GUI标准组件都是AWT包中的根类Component(构件)类的子类。

6.2.2 容器、布局和部件

(1)容器

Container是Component的子类,具有构件的所有性质,并且能放置其他容器和构件。

? 一个容器能容纳若干构件;

? 调用容器对象的add方法将构件加入到容器中;

? 窗体(Window)容器在不同的操作平台上显示不同的外观。

? 面板(Panel)容器是没有标题和边框的透明容器,不能单独存在,必须加入窗体

等其他容器中使用。 (2)各类GUI部件的特点

? 按钮(Button):单击产生ActionEvent事件 ? 复选框(Checkbox):选择时产生ItemEvent事件 ? 复选框组(CheckboxGroup):只能选一,单选; ? 下拉列表(Choice):只能选1项; ? 列表(List):可以选多项;

? 文本框(TextField):只能显示一行,按回车触发ActionEvent; ? 文本域(TextArea):显示多行文本。

? 画布(Canvas):只能绘图,处理鼠标和键盘事件。 ? 窗体(Frame):顶级容器,关闭时触发WindowEvent;

? 面板(Panel): 可进行嵌套布局的容器,面板作为一个部件加入到窗体容器中,面

板作为容器又可以放其他面板和部件。

? 对话框(Dialog):包括模式和非模式两类,依赖其他窗体。 ? 文件对话框(FileDialog):用于打开和关闭文件。

? 菜单(Menu)、菜单条(MenuBar)和菜单项(MenuItem):只能对Frame创建菜

单,菜单条中添加菜单,菜单中可以添加菜单项或子菜单。 (3)布局

Java通过布局管理器对所有构件进行管理,以支持跨平台的动态布局效果。常见布局管理器有5种,见表11-1所示。

表11-1 常见布局管理器及特点

布局 FlowLayout布局 特点 组件按照加入的先后顺序从左到右排放,放不下再换至下一行,部件大小不变,是Applet和Panel的默认布局。 将容器分为东(East)、南(South)、西(West)、北(North)、BorderLayout布局 中(Center)五个区域,加入组件用命令:add(方位名字符串, 组件)。是Frame、Dialog的默认布局。 将容器空间分为若干行乘若干列的网格区域,组件按从左向GridLayout布局 右,从上到下的次序被加到各单元格中,组件的大小将调整为与单元格大小相同。 CardLayout布局 将组件叠成卡片的形式,每个组件占用一块卡片,通过卡片的翻动选择要显示的组件。 在GridLayout的基础上发展而来,将整个容器分成若干行、GridBagLayout布局 列组成的单元,但各行可以有不同的高度,每栏也可以有不同的宽度,一个部件可以占用一个、也可以占用多个单元格。 6.2.3 事件处理

(1) 事件处理机制

? 涉及对象有事件源、事件、事件处理者(监听者)。事件源是发生事件的对象;事件对象是提供事件相关信息的对象;事件处理者则是消化事件,完成特定处理的对象。

? Java采用委托(授权)事件处理机制;事件源对其可能发生的事件分别授权不同的事件处理者处理;通过如下命令注册监听者:

addXXXListener(XXXListener a);

其中,XXX与相应事件类型相关,例如:按钮点击动作事件对应标记为“Action”. 要注销监听者使用removeXXXListener(XXXListener a);

? 事件处理者必须实现某类事件相对应的接口,只有符合接口规范的对象才能作为事件处理者,通过编写相应方法实现事件的处理。

例如,ActionListener接口中定义了如下方法用来处理事件。 public void actionPerformed(ActionEvent e);

? Java为每类事件提供了一个相应的接口。 (2) 事件与事件处理

? java.util.EventObject是所有事件类的父类;java.awt.AWTEvent是所有AWT事件类的父类,其包括低级事件和基于语义的高级事件。

? XXXEvent对应的事件处理接口通常为XXXListener,但鼠标事件(MouseEvent)对应的事件处理接口有两个,一个是MouseListener,另一个是MouseMotionListener,它们分别用来处理鼠标的移动(含拖动)与鼠标的点击动作。各类接口的事件处理方法见表11-2。

表11-2 AWT事件接口及处理方法

描述信息 点击按钮、点击菜单项、文本框按回车等动作 选择了可选项的项目 文本部件内容改变 移动了滚动条等组件 TextListener AdjustmentListener textValueChanged(TextEvent) adjustmentVlaueChanged (AdjustmentEvent) ItemListener itemStateChanged(ItemEvent) 接口名称 ActionListener 方法(事件) actionPerformed(ActionEvent) 鼠标移动 MouseMotionListener mouseDragged(MouseEvent) mouseMoved(MouseEvent) 鼠标点击等 MouseListener mousePressed(MouseEvent) mouseReleased(MouseEvent) mouseEntered(MouseEvent) mouseExited(MouseEvent) mouseClicked(MouseEvent) 键盘输入 KeyListener keyPressed(KeyEvent) keyReleased(KeyEvent) keyTyped(KeyEvent) 组件收到或失去焦点 组件移动、缩放、显示/隐藏等 FocusListener focusGained(FocusEvent) focusLost(FocusEvent) ComponentListener componentMoved(ComponentEvent) componentHidden(ComponentEvent) componentResized(ComponentEvent) componentShown(ComponentEvent) 窗口事件 WindowListener windowClosing(WindowEvent) windowOpened(WindowEvent) windowIconifed(WindowEvent) windowDeiconifed (WindowEvent) windowClosed(WindowEvent) windowActived(WindowEvent) windowDeactived(WindowEvent) 容器增加/删除组件 ContainerListener componentAdded(ContainerEvent) componentRemoved(ContainerEvent) ? 事件适配器

Java中为那些具有多个方法的监听者接口提供了事件适配器类,这个类通常命名为XxxAdapter,在该类中以空方法体实现了相应接口的所有方法,程序员设计可通过继承适配器类来编写监听者类,在类中只需给出关心的方法,从而减轻工作量。

? 在事件处理代码中区分事件源

在事件处理代码中可通过相应的方法得到事件源对象或与事件源相关的信息,见表11-3,通过这些信息可区分事件源。

表11-3 在事件处理代码中区分事件源

事件类型 ActionEvent 方法 getSource() 作用 返回事件对象对应的事件源对象 getActionCommand() WindowEvent ItemEvent KeyEvent getWindow() getItemSelectable() getKeyChar() getKeyCode() 返回动作命令字符串 返回窗体事件对应的窗体对象 返回选择事件对应的事件源对象 返回键盘事件按键对应的字符 返回键盘事件所按键的编码值 6.3 样例程序

样例1:在应用程序窗体中安排1个文本框,一个标签。在文本框输入一个数字(0-9),按回车键,在标签处显示对应的英文单词。 0---zero,1---one,....

【参考程序】

import java.awt.*;

import java.awt.event.*;

public class myFrame extends Frame implements ActionListener { Label res; TextField my; String

word[]={\\

public myFrame (){ my =new TextField(20);

res=new Label(\英文单词 \ setLayout(new FlowLayout());

add(my); add(res); my.addActionListener(this); }

public void actionPerformed(ActionEvent e) { String s=my.getText(); int n=Integer.parseInt(s); res.setText( word[n] ); }

public static void main(String args[]) { Frame my= new myFrame(); my.setSize(300,300); my.setVisible(true);

实验6-图形化用户界面编程

实验6图形用户界面编程6.1实验目的(1)掌握图形用户界面的布局设置;(2)掌握事件驱动编程的特点,如何区分事件源。(3)掌握文本框、文本域、标签、按钮等部件的操作方法。6.2知识要点6.2.1awt包简介(1)java.awt包可用于编写JavaApplication和A
推荐度:
点击下载文档文档为doc格式
8vncd4j1d29kcek7hm3l8mqar1rud1013er
领取福利

微信扫码领取福利

微信扫码分享