图形界面设计(AWT).ppt

上传人:牧羊曲112 文档编号:6257192 上传时间:2023-10-11 格式:PPT 页数:31 大小:551KB
返回 下载 相关 举报
图形界面设计(AWT).ppt_第1页
第1页 / 共31页
图形界面设计(AWT).ppt_第2页
第2页 / 共31页
图形界面设计(AWT).ppt_第3页
第3页 / 共31页
图形界面设计(AWT).ppt_第4页
第4页 / 共31页
图形界面设计(AWT).ppt_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《图形界面设计(AWT).ppt》由会员分享,可在线阅读,更多相关《图形界面设计(AWT).ppt(31页珍藏版)》请在三一办公上搜索。

1、第一章,图形界面设计(AWT),课程目标,AWT包简介Frame类及其主要方法六个常用控件:Button、Label、TextField、List、Choice、Panel窗体布局(FlowLayout、BorderLayout、GridBagLayout等)事件(按钮事件、窗体事件、鼠标事件),体验项目,编写一个QQ用户注册窗体,当用户在程序窗体中输入信息后,点击“确定”按钮,把用户的提交信息写入到一个文本文件中,实现类似QQ注册的功能。程序的运行过程如下:(1)程序启动后,出现“QQ注册”窗体界面,填写完整的信息,如图所示:,(2)点击“确定”按钮,即可把注册信息写入到同一级目录下的reg

2、Infor.txt文件中,同时控制台上会显示“注册成功.”和用户的注册信息。如图所示:,(3)如果注册时有任何一项为空,则控制台会提示:“注册信息失败:请填写完整的信息.”,程序运行结果如图所示:,(4)若点击图1-1中的“取消”按钮,将退出该程序。,图形界面设计简介,AWT简介AWT(Abstract Window Toolkit-抽象窗口工具箱)是Sun公司自JAVA1.0开始就提供的一个用于基本GUI编程的类库,AWT库包含了多种基本的界面控件类,它可以使我们轻松地创建一个窗口,并且在其中添加按钮、文本框、列表等控件,下面就为大家介绍AWT库的基本知识。AWT主要是由以下三个部分组成:,

3、组件(Components),容器(Containers),布局管理器(Layouts),窗体框架Frame类,在JAVA中,顶层窗口(没有包含在另一个窗口中的窗口)我们习惯上称它为框架,它是一个由最大化按钮、最小化按钮、关闭按钮和框架名称所组成的一个框架运行界面。在AWT库中有Frame类与之相对应。在JAVA图形编程中,框架是最高层的,它是一个容器,所有的组件如按钮、文本框等都包含在这个容器中。,Frame类的创建及主要方法,我们先编写一个程序,显示一个简单的框架,使大家对框架能有一个比较直观的了解。import;public class FrameApppublic static voi

4、d main(String args)Frame frame=new Frame();frame.setSize(180,160);frame.show();,我们先来分析一下上面的例子:首先,为了能够使用AWT中的Frame类,我们必须导入名为的包,然后在主函数中使用Frame类来实例化一个对象,这样一个空的框架就创建好了,之后我们用框架对象的setSize()方法设置该框架的长和宽,然而这样还不够,由于框架创建时并不是可见的,我们还要调用框架对象的show()方法,使之显示在屏幕上。这样当我们运行这段程序后,屏幕上就会出现一个空白的框架了。上面的程序我们用到了Frame类的几个常用的方法。

5、Frame类还有很多其它的方法,如下所示:,Frame类的几个常用的方法,setBackground(Color c)设置框架的背景色。setLocation(int a,int b)设定框架出现在屏幕上的位置。setAlwaysOnTop(boolean b)决定框架是否显示在最上层。setName(String str)设置框架的名字。String getName()获取框架的名字。setTitle(String str)改变框架的标题。add(Component c)添加组件到框架Frame中。setIconImage(Image i)设置框架的图标。setResizable(boole

6、an b)决定框架的大小是否可以改变。hide()隐藏框架使Frame不可见。,控件类,按钮Button按钮控件Button组件的使用是最简单的,只需要实例化Button类,并指定在按钮上出现的标签就行了(如果不想要标签,亦可使用默认标签,但这种情况极少出现)。构造方法:Button()创建一个按钮,按钮上的标签没有任何内容;Button(String label)创建一个按钮,自定义按钮标签上的内容。如:Botton button=new Button(“按钮);常用方法:setBackground(Color color)设置按钮的背景色;setEnable(boolean b)设置按钮是

7、否可用;setFont(Font f)设置按钮标签的字体;setForeground(Color color)设置按钮的前景色;setLabel(String text)设置按钮标签的内容;setVisible(boolean b)设置按钮是否可见。,按钮的例子,import;import;import;public class ButtonApp extends FrameButton button1;Button button2=new Button(Second);public ButtonApp()super(按钮示例);this.setLayout(new FlowLayout();

8、button1=new Button();button1.setLabel(First);this.setSize(180,160);this.add(button1);this.add(button2);public static void main(String args)ButtonApp buttonApp=new ButtonApp();buttonApp.show();,标签Label,标签控件Label也是一个很简单的控件,用于在Frame中显示一个文本标签,它的用法和Button类似。构造方法:Label()创建一个标签,标签上没有任何文字。Label(String text)

9、创建一个标签,并且自定义标签上的文字。Label(String text,int alignment)创建一个标签,并且自定义标签上的文字及对齐方向。常用方法:setAlignment(int align)设置标签文本的对齐方式 setBackground(Color color)设置标签的背景色 setEnable(boolean b)设置标签是否可用 setFont(Font f)设置标签文本的字体 setForeground(Color color)设置标签的前景色 setText(String text)设置标签的内容 setVisible(boolean b)设置标签是否可见,文本域

10、TextField,文本域控件TextField用来创建一个文本域,允许编辑单行文本。构造方法:TextField()创建一个文本域 TextField(String text)创建一个文本域,并且初始化其内容 TextField(String text,int columns)创建一个文本域,有初始内容,并且可设置列数 TextField(int columns)创建一个文本域,没有初始内容,可设置列数常用方法:setBackground(Color color)设置标签的背景色。setColumns(int columns)设置文本域的列数。setEditable(boolean b)设置

11、文本域可否编辑。setEnable(boolean b)设置文本域是否可用。setFont(Font f)设置文本域文字的字体。setForeground(Color color)设置文本域的前景色。setText(String text)设置文本域的文本内容。setVisible(boolean b)设置文本域是否可见。,列表框List,列表框控件List用来在Frame框架中显示一个列表框。构造方法:List()创建一个空列表框 List(int rows)创建一个列表框,并指定行数 List(int rows,boolean multipleMode)创建一个列表框,指定行数,并指定是否

12、使用多行选择模式常用方法:add(String item)为列表框追加项目 add(String item,int index)在列表框的index位置添加项目 addItem(String item)同add(String item)addItem(String item,int index)同add(String item,int index)clear()清除列表框的所有项目 int countItems()返回int值,即返回列表框的项目总数 delItem(int index)删除在列表框index位置的项目delItems(int start,int end)删除从列表框的star

13、t位置开始到end位置的所有项目String getSelectedItem()返回String值,返回一个选中的项目String getSelectedItems()返回String 数组,返回所有被选中的项目 removeAll()清除列表框的所有项目 select(int index)选中列表框index位置上的项目 setMultipleMode(boolean b)设置能否采用多行选择模式,选择框Choice,选择框控件Choice用来在Frame框架中显示一个选择框。构造方法:Choice()创建一个选择框常用方法:addItem(String item)为选择框添加一个项目 St

14、ring getItem(int index)返回String值,返回选择框index位置的项目的文本标签 int getItemCount()返回int值,返回选择框拥有的项目总数 String getSelectedItem()返回String值,返回已选中的项目 insert(String item,int index)在index位置上插入文本标签为item的项目remove(int index)删除index位置上的项目 removeAll()删除所有项目 select(int index)选中index位置上的项目,面板Panel,面板控件Panel是JAVA中常用到的容器之一,P

15、anel可以让组件加入其中,还可以设置Panel自己的布局管理器,再由这个管理器控制Panel中各个组件的位置及大小。有了这种特性,我们就可以通过在简单布局中加入Panel的方法,创造出更为复杂的布局。所以适当的利用Panel可以使版面设计更为简单。构造方法:Panel()建立一个Panel,默认布局是FlowLayout Panel(LayoutManager layout)建立一个Panel,并且自定义布局管理器常用方法:add()为面板添加其它控件,如Button,Label等 setLayout(LayoutManager mgr)设置面板中组件的版面,窗体布局,为什么要使用布局管理

16、在最初接触JAVA时,大家就应该了解到JAVA语言是跨平台的语言,而不同的平台对图形界面的管理也是不尽相同的,所以如果我们采用绝对定位的方法管理JAVA图形界面的布局,那么这个界面就会在某些环境下变得支离破碎。JAVA的开发人员当然会考虑到这个问题,他们提出的解决方案就是预先定义若干种布局,再依靠这些基本布局的组合,创造出更为复杂的布局方式。这样,我们开发的应用程序的版面就不会因为应用在不同的操作平台下而变的混乱。这就是我们要讲的布局管理。,三种常用的布局,FlowLayout布局,GridLayout布局,BorderLayout布局,流水布局,网格布局,边框布局,FlowLayout布局,

17、FlowLayout布局是一个相当简单的排列方法,形如其名FlowLayout就如同流水一般,将加入其中的组件一个接着一个从左往右依次排列下去,若组件个数太多,多到无法只用一行显示时,FlowLayout布局管理器会自动将组件向下一行排列。要使用FlowLayout这种布局,只要在容器中设置使用FlowLayout这种版面管理器即可。构造方法:FlowLayout()建立一个新的FlowLayout,此FlowLayout默认为居中对齐,而且组件彼此之间有5单位的水平与垂直间距。FlowLayout(int align)建立一个新的FlowLayout,此FlowLayout可设置排列方式,而

18、且组件彼此之间有5单位的水平与垂直间距。FlowLayout(int align,int hgap,int vgap)建立一个新的FlowLayout,此FlowLayout可设置排列方式与组件间距。,FlowLayout类的后两个构造方法均有参数,其中参数align可以设定FlowLayout布局中的组件靠什么方向排列。,FlowLayout共有五种排列方式,CENTER(默认值),LEFT,RIGHT,LEADING,TRAILING,GridLayout布局,GridLayout比FlowLayout多了行和列的设置,也就是说你要先设置GridLayout共有几行几列,就如同一个二维平面

19、一般,然后添加GridLayout布局中的组件会填充第一行的格子,然后再从第二行开始填。依此类推,就像是填充一个个格子一般,而且GridLayout布局管理器会将填进去的组件设置为一样大。构造方法:GridLayout()建立一个新的GridLayout布局,默认值为一行一列 GridLayout(int rows,int cols)建立一个指定了几行几列的GridLayout布局 GridLayout(int rows,int cols,int hgap,int vgap)建立一个指定了几行几列GridLayout布局,并设置组件的垂直和水平间距,BorderLayout布局,BorderL

20、ayout将版面划分成东、西、南、北、中五个区域,大家可以将组件放在这五个区域中的某个区域里。要使用BorderLayout,只要在容器中设置使用BorderLayout这种版面管理即可。构造方法:BorderLayout()建立一个组件间没有间距的BorderLayout布局BorderLayout(int hgap,int vgap)建立一个组件间有间距的BorderLayout 布局。,另外还有两种布局CardLayout布局和GridBagLayout布局。CardLayout布局的功能就如同你将很多张卡片叠在一起,你一次只能看到其中一张卡片,但是你可以任意抽出其中一张卡片来看。Gri

21、dBagLayout布局是使用网格单元,指定组件的相对布置,即在一个网格的单元中指定它们的位置,每个组件的网格单元的大小可以不同,每个网格的每一行可以有不同的列数。由于这CardLayout布局不太常用,因此就不做详细介绍了,有兴趣的同学可以研究一下。,事件,JAVA事件的处理机制 大家可能已经注意到了上面的程序中,按下按钮后不会触发任何事件。如果你想在按下按钮时,实现一定的功能,就必须进入程序内部,编写用于决定要发生什么事情的代码。在这里就用到了JAVA的事件处理机制。在事件的处理过程中,主要涉及三个对象:,Event-事件,Event Source-事件源,Event handler-事件

22、处理者,用户对界面操作在JAVA语言上的描述,以类的形式出现,例如键盘操作对应的事件类是KeyEvent,事件发生的场所,通常就是各个组件,例如按钮Button,接收事件并对其进行处理的对象,JAVA的事件处理是采取“委派事件模型”(也称为观察者模式),所谓的“委派事件模型”是指当事件发生时,产生事件的对象(即事件源)会把此信息传给“事件聆听者”(处理的一种方式),而这里所指的“事件对象”事实上就是事件类库里某个类所创建的对象,我们暂且把它称为“事件对象”。,按钮事件,import java.awt.*;import;import;public class ButtonEventApp ext

23、ends FrameButton myButton=new Button(测试按钮);public ButtonEventApp()super(Button事件示例);myButton.addActionListener(new MyEvent();this.add(myButton);setSize(160,120);show();public static void main(String args)new ButtonEventApp();class MyEvent implements ActionListenerpublic void actionPerformed(ActionEv

24、ent e)System.out.println(Button事件处理测试.);,对按钮myButton进行事件注册,用内部类实现ActionListener接口,编写按钮的执行任务,按钮事件程序运行结果,运行效果如下:,点击“测试按钮”按钮,此处我们虽然只是简单的输出了一个字符串,同学们可以试着让程序在点击按钮的时候做一些其他的事,比如取出文本域中的数字进行加减运算等。,窗体事件,用户改变窗口的状态,比如最大化、最小化或者关闭等,会触发窗体事件,窗体事件的构造方法是“WindowEvent(Window source,int id)”,其中“source”表示触发此事件的窗体,“id”则表示

25、事件代码。如下列举了窗体事件代码常量以及它们的含义。WINDOW_CLOSED:表示窗口被关闭WINDOW_CLOSING:表示窗口处于关闭过程中WINDOW_DEICONIFIED:表示由最小化恢复为原来大小WINDOW_ICONIFIED:表示窗口被最小化可以通过“getWindow()”方法或者“getSource()”方法返回产生该事件的窗口,但是如果采用getSource()方法,返回的结果需要转换为Window类型。,鼠标事件,要处理鼠标事件必须直接或间接的实现MouseListener或者MouseMotionListener接口,鼠标事件类中有以下几种重要的方法:getX(),

26、getY():获取鼠标指针的坐标位置;getClickCount():获取鼠标被点击的次数。鼠标事件监听器MouseListener中共有5种方法:按下鼠标、释放鼠标、点击鼠标、鼠标进入以及鼠标退出。MousePressed(MouseEvent e)负责处理鼠标按下的事件。MouseReleased(MouseEvent e)负责处理鼠标释放事件。MouseEntered(MouseEvent e)负责处理鼠标指针进入容器事件 MouseExited(MouseEvent e)负责处理鼠标离开事件。MouseClicked(MouseEvent e)负责处理鼠标点击事件。另外在MouseMo

27、tionListener监听器中还有两个常用的方法。MouseDragged(MouseEvent e)负责处理鼠标拖动事件。MouseMoved(MouseEvent e)负责处理鼠标移动事件。,实践项目,程序的实现要求如下:(1)设计一个完整规范的QQ注册窗体,用本章所讲的几种布局管理器合理的布局窗体中的控件。(2)为控件添加事件处理,如果有项目为空,提示注册失败,否则将注册信息写入到文件中。(3)使用FileWriter和PrintWriter两个类(此处只是使用,以后的章节中会详细介绍)。,本章总结,AWT包简介Frame类及其主要方法六个常用控件:Button、Label、TextField、List、Choice、Panel窗体布局(FlowLayout、BorderLayout、GridLayout等)事件(按钮事件、窗体事件、鼠标事件),

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号