Java用户界面课件_第1页
Java用户界面课件_第2页
Java用户界面课件_第3页
Java用户界面课件_第4页
Java用户界面课件_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第7讲Java用户界面(AWT篇)**温故**类成员的访问权限public、protected、友好、private子类继承,子类继承父类的成员在同一包:子类可继承父类非私有成员不同包:子类可继承父类的protcted和public成员。变量的声明、变量的作用域、变量的隐藏方法的声明、参数的传值方式、方法的覆盖、构造函数多态、对象的上转型对象父类变量引用子类对象。抽象类与接口本讲要点AWT\Swing\SWT布局管理器的使用GUI与AWT在java中,AWT是用来处理图形最基本的方式,它可以用来创建java的applet和窗口。AWT包提供4大类功能:1、图形界面组件,如:窗口、按钮、菜单等2、2D图形绘制组件,如:直线、圆形。3、布局对象:用来安排图形界面组件的位置。4、事件处理对象,用来处理图形界面组件所触发的事件。图形用户界面(GraphicsUserInterface简称GUI)通过提供菜单、按钮、标签标识、鼠标等,完成对计算机发出指令、启动应用程序等操作任务。java.awt包中提供了GUI设计所使用的类和接口,提供了各种用于GUI设计的标准类,图1显示了AWT中主要类之间的关系。由图可知,AWT中的类按其功能的不同可分为5大类。图1AWT类层次基本GUI组件类(Component)Java的图形用户界面的最基本组成部分是组件(Component),组件是一个可以以图形化的方式显示在屏幕上并能与用户进行交互的对象,例如一个按钮,一个标签等。组件不能独立地显示出来,必须将组件放在一定的容器中才可以显示出来。用来提供人机交互的基本控制界面类java.awt.Component是许多组件类的父类,Component类中封装了组件通用的方法和属性,如图形的组件对象、大小、显示位置、前景色和背景色、边界、可见性等,因此许多组件类也就继承了Component类的成员方法和成员变量,这些成员方法是许多组件都共有的方法,常见的成员方法如表1所示容器类(Container)容器Container也是一个类,它允许其他的组件被放置在其中。容器本身也是一个组件,具有组件的所有性质,但是它的主要功能是容纳其它组件和容器。容器java.awt.Container是Component的子类,一个容器可以容纳多个组件,并使它们成为一个整体。容器可以简化图形化界面的设计,以整体结构来布置界面。所有的容器都可以通过add()方法向容器中添加组件。Container常用的有三个主要类型:窗口(Window)、面板(Panel)和Applet,常用的有Panel,Frame,Applet布局管理类容器里组件的位置和大小是由布局管理器决定的,每个容器都有一个布局管理器,当容器需要对某个组件进行定位或判断其大小尺寸时,就会调用其对应的布局管理器事件处理类在JDK1.1及其以后的版本中,AWT采用委托事件模型进行事件处理,委托事件模型包括事件源、事件和事件监听器,详细内容请参阅第7章基本图形类用于构造图形界面的类,如字体类(Font)、绘图类(Graphics)、图像类(Image)和颜色类(Color)等

SwingSwing的含义:是Java在开发这个新的图形界面项的项目名称。AWT是Swing的基础。Swing的产生主要原因就是AWT不能满足图形化用户界面发展的需要。Swing是用Java实现的轻量级(light-weight)组件Swing是由100%纯Java实现的,Swing组件是用Java实现的轻量级(light-weight)组件,没有本地代码,不依赖操作系统的支持,这是它与AWT组件的最大区别。由于AWT组件通过与具体平台相关的对等类(Peer)实现,因此Swing比AWT组件具有更强的实用性。Swing在不同的平台上表现一致,并且有能力提供本地窗口系统不支持的其它特性。Swing采用了一种MVC的设计范式Swing外观感觉采用可插入的外观感觉(PluggableLookandFeel,PL&F)Swing使得程序在一个平台上运行时能够有不同的外观Frame类Java中“窗口”被视为一个容器。它可以把各种不同的图形界面组件放置到这个容器中,而这些图形界面组件就是容器中的接口,通过图形界面组件所提供的方法,来完成一定的功能。创建窗口的基本和必要操作包括如下步骤:1、设置窗口的大小2、给窗口一个标题3、在屏幕的某个位置放置窗口4、显示窗口5、关闭窗口importjava.awt.*;

publicclassMyFrameextendsFrame{

publicstaticvoidmain(Stringargs[]){

MyFramefr=newMyFrame("HelloOutThere!");

//构造方法

fr.setSize(200,200);

//设置Frame的大小,缺省为(0,0)

fr.setBackground(Color.red);

//设置Frame的背景,缺省为红色

fr.setVisible(true);

//设置Frame为可见,缺省为不可见

}

publicMyFrame(Stringstr){

super(str);//调用父类的构造方法

}

}Pane类importjava.awt.*;

publicclassFrameWithPanelextendsFrame{

publicFrameWithPanel(Stringstr){

super(str);

}

publicstaticvoidmain(Stringargs[]){

FrameWithPanelfr=newFrameWithPanel("FramewithPanel");

Panelpan=newPanel();

fr.setSize(200,200);

fr.setBackground(Color.red);

//框架fr的背景颜色设置为红色

fr.setLayout(null);

//取消布局管理器

pan.setSize(100,100);

pan.setBackground(Color.yellow);

//设置面板pan的背景颜色为黄色

fr.add(pan);//用add方法把面板pan添加到框架fr中

fr.setVisible(true);

}

}

使用图形用户界面AWT的组件Label类的构造方法主要功能Label()创建一个没有文字的标签Label(Strngstr)创建一个以str为文字的标签Label(Stringstr,intalign)创建一个以str为文字的标签,并以align为对齐方式LEFTCENTERRIGHT表示左中右Label类的方法主要功能intgetAligment()返回标签内文字的对齐方式voidsetAligment(intalign)设置标签内文字的对齐方式StringgetText()获得标签内的文字voidsetText(Stringtext)设置标签内的文字Java.awt.Label的方法Color类用来设置颜色,构造方法有两个Color(floatr,floatg,floatb);和Color(intr,intg,intb);其中r、g、b表示红绿蓝3色float型取值范围0.0—1.0;int型取值范围0-256标签组件是用来在窗口中显示文字的组件,由Label类来创造//在窗口中的指定位置创建一个标签importjava.awt.*;publicclassWindow11_3{publicstaticvoidmain(String[]args){Framefra=newFrame("这是创建标签的程序");Labelb1=newLabel();//创建一个空标签fra.setBounds(0,0,300,200);b1.setText("欢迎使用JAVA语言");//为标签添加文字b1.setAlignment(Label.CENTER);//设置标签在窗口中央位置b1.setBackground(Color.blue);//引用Componentlei的方法设置标签背景颜色b1.setForeground(Color.red);//引用Componentlei的方法设置标签中的文字颜色fra.add(b1);fra.setVisible(true);}}创建大小相同、背景色不同、显示内容与文本的对齐方式各不相同的三个标签,并将它们左端对齐,竖向排列在一个300×200大小的窗口内。importjava.awt.*;//创建按钮publicclassWindow11_4{publicstaticvoidmain(String[]args){Framefra=newFrame("创建按钮程序");Buttonbut=newButton("pushme");//创建一个按钮fra.setBounds(0,0,300,200);fra.add(but);//将按钮添加到窗口中fra.setVisible(true);//显示窗口}}importjava.awt.*;//创建一个给定大小尺寸的按钮publicclassWindow11_5{publicstaticvoidmain(String[]args){Framefra=newFrame("创建按钮程序");Buttonbut=newButton("pushme");//创建一个按钮fra.setBounds(0,0,300,200);fra.setLayout(null);//关闭页面设置but.setBounds(50,50,100,50);//设置按钮的大小fra.add(but);//将按钮添加到窗口中fra.setVisible(true);//显示窗口}}创建四个大小相同的60×30尺寸的按钮,依照其标题的意义分别安置到上、下、左、右四个方位,使它们呈十字形,并对称地排放到280×270的窗口中心。文本框文本框是用来在窗口中显示文字的矩形框,这些文字可以被用户编辑。文本框可以用来输入文字、编辑文字并显示输入的文字、读取用户输入的文字。由TextField类来创建。TextField类的构造方法主要功能TextField()创建一个空的文本框TextField(intcolnmns)创建一个空的文本框,具有指定的列TextField(Stringtext)创建一个包含有”text”内容的文本框TextField(Stringtext,intcolnmns)创建一个具有指定列且包含内容的文本框TextField类的方法主要功能StringgetText()获得文本框的内容intgetColumns()获得文本框的列数voidsetText(Stringtext)设置文本框的内容为textvoidsetColumns(intcolumns)设置文本框的列数实现如图所示的身份验证界面。其中窗口大小为300×200,标签尺寸为70×20,文本域尺寸为100×20,按钮尺寸为100×30.布局管理器决定容器中组件的尺寸和位置java.awt包中共定义了五种布局编辑类,每个布局编辑类对应一种布局策略,分别是

FlowLayout(流式布局)BorderLayout(边界布局)GridLayout(格式布局)GridBagLayout(格袋布局)

LayoutManager布局管理器

构造方法主要下面几种:FlowLayout(FlowLayout.RIGHT,20,40);

/*第一个参数表示组件的对齐方式,指组件在这一行中的位置是居中对齐、居右对齐还是居左对齐,第二个参数是组件之间的横向间隔,第三个参数是组件之间的纵向间隔,单位是象素。*/FlowLayout(FlowLayout.LEFT);

//居左对齐,横向间隔和纵向间隔都是缺省值5个象素

FlowLayout();

//缺省的对齐方式居中对齐,横向间隔和纵向间隔都是缺省值5个象素

importjava.awt.*;

publicclassExGui{

privateFramef;

privateButtonb1;

privateButtonb2;

publicstaticvoidmain(Stringargs[]){

ExGuithat=newExGui();

that.go();

}publicvoidgo(){

f=newFrame("GUIexample");

f.setLayout(newFlowLayout());

//设置布局管理器为FlowLayout

b1=newButton("PressMe");

//按钮上显示字符"PressMe"

b2=newButton("Don'tPressMe");

f.add(b1);

f.add(b2);

f.pack();

//紧凑排列,其作用相当于setSize(),即让窗口

尽量小,小到刚刚能够包容住b1、b2两个按钮

f.setVisible(true);

}

}

创建六个TextField组件,组件的内容初始化为江南六大著名水乡古镇的简介,将组件添加到300×150大小的应用窗口中,应用窗口使用FlowLayout管理器方案。BorderLayoutBorderLayout是容器Frame\JFrame和JApplet的默认布局方式将容器分成五个区域,NORTH (顶部)SOUTH (底部)WEST (左侧)EAST (右侧)CENTER (中间)每个区域最多只能1个组件构造方法:BorderLayout(hGap,vGap);hGap–区域间的水平间隙vGap-区域间的竖直间隙上面两个数据的默认值是0添加组件myContainer.add(component,position)component–需要加入到容器中的组件positions–(BorderLayout.NORTH)NORTH,SOUTH,EAST,WEST,CENTERimportjava.awt.*;

publicclassbuttonDir{

publicstaticvoidmain(Stringargs[]){

Framef=newFrame("BorderLayout");

f.setLayout(newBorderLayout());

f.add("North",newButton("North"));

//第一个参数表示把按钮添加到容器的North区域

f.add("South",newButton("South"));

//第一个参数表示把按钮添加到容器的South区域

f.add("East",newButton("East"));

//第一个参数表示把按钮添加到容器的East区域

f.add("West",newButton("West"));

//第一个参数表示把按钮添加到容器的West区域

f.add("Center",newButton("Center"));

//第一个参数表示把按钮添加到容器的Center区域

f.setSize(200,200);

f.setVisible(true);

}

}GridLayoutGridLayout布局管理器GridLayout按行与列将容器等分成网格每个组件占用具有相同宽度和高度的网格添加组件占用网格的顺序:从上到下,从左到右当一行满了,则继续到下一行,仍然是从左到右GridLayout的构造函数:1)GridLayout(),创建一个默认为1行的网格布局管理器,行布局中所有组件大小相同。2)GridLayout(introws,intcols),创建一个带指定行数和列数的网格布局管理器,布局中所有组件大小相同。3)GridLayout(introws,intcols,inthgap,intvgap),创建一个带指定行数、列数、水平与垂直间距的网格布局管理器,布局中所有组件大小相同。importjava.awt.*;

publicclassButtonGrid{

publicstaticvoidmain(Stringargs[]){

Framef=newFrame("GridLayout");

f.setLayout(newGridLayout(3,2));

//容器平均分成3行2列共6格

f.add(newButton("1"));//添加到第一行的第一格

f.add(newButton("2"));//添加到第一行的下一格

f.add(newButton("3"));//添加到第二行的第一格

f.add(newButton("4"));//添加到第二行的下一格

f.add(newButton("5"));//添加到第三行的第一格

f.add(newButton("6"));//添加到第三行的下一格

f.setSize(200,200);

f.setVisible(true);

}

}

将华东六省一市的名称作为按钮组件标题,将这些按钮添加到大小为300×200的应用窗口中,窗口应用3行×2列的网格布局管理器方案。GridBagLayoutGridBagLayout布局管理器是java.awt包中最灵活、同时又是最复杂的一种布局管理器,它类似于网格布局。GridBagLayout布局管理器把组件组织成长方形的网格,使用这种布局,可灵活地把组件放在长方形网格的任何行和列中,它也允许特定的组件跨多行和多列。GridBagLayout类只有一个不带任何参数的构造函数,仅仅创建一个布局。为了指出组件的位置和尺寸的约束,必须使用GridBagContraints类对象,通过调用GridBagContraints类对象的属性变量限制组件的位置和尺寸。创建GridBagConstraints:

GridBagContraintsgbcObj=newGridBagConstraints();//创建GridBagContraints类的属性如下1)gridx、gridy,指出组件所在的列数和行数;两者组成长方形网格(单元),从左到右,gridx的值由小到大,从上到下gridy的值由小至大。2)gridwidth、gridheight,指出组件跨的行数和列数;默认方式,组件的大小等于它显示区域的大小(显示网格的区域),但是可以使用属性gridwidth、gridheight来扩大显示区域的大小。缺省值为1。如果指定了gridx和gridy,则组件不能实现跨行或跨列;如果不指定gridx和gridy属性,则类似于网格布局,组件按加入到容器的布局组件。

3)anchor,指出组件在网格上的方位。其默认值是CENTER,居中放置。anchor的有效值为:GridBagConstraints.NORTH(北)GridBagConstraints.SOUTH(南)GridBagConstraints.WEST(西)GridBagConstraints.EAST(东)GridBagConstraints.NORTHWEST(西北)GridBagConstraints.NORTHEAST(东北)GridBagConstraints.SOUTHWEST(西南)GridBagConstraints.SOUTHEAST(东南)GridBagConstraints.CENTER(中,默认)NORTHNORTHWESTCENTERWESTSOUTHSOUTHWESTEASTNORTHEASTSOUTHEAST4)fill,是否充满网格,其有效值为:GridBagConstraints.BOTH(填满整个区域);GridBagC

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论