javaGUI程序设计.ppt
《javaGUI程序设计.ppt》由会员分享,可在线阅读,更多相关《javaGUI程序设计.ppt(83页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、JAVA 语言第第10讲讲JAVA的图形用户界面设计的图形用户界面设计2023/1/28JAVA 语言第10讲上一讲回顾n输入输入/输出流的概念和类层次结构输出流的概念和类层次结构n字节流、字符流的定义和使用字节流、字符流的定义和使用n节点流与过滤流的定义和使用节点流与过滤流的定义和使用n文件管理以及文件操作文件管理以及文件操作n对象串行化的概念和实现方法对象串行化的概念和实现方法2023/1/28JAVA 语言第10讲学习要点学习要点n了解了解AWT和和Swing组件的基础知识组件的基础知识n理解如何创建框架窗口理解如何创建框架窗口n理解如何向框架窗口添加组件理解如何向框架窗口添加组件n使用
2、各种布局管理器创建复杂的窗口使用各种布局管理器创建复杂的窗口n理解理解Java的事件处理机制的事件处理机制n创建创建GUI对象,以及各对象,以及各GUI对象的事件对象的事件处理处理2023/1/28JAVA 语言第10讲4Graphics User InterfacenGUI-GraphicsUserInterface。nGUI程序给用户提供了一个视觉上更加直程序给用户提供了一个视觉上更加直观,操作更加方便、快捷的用户环境。观,操作更加方便、快捷的用户环境。n在在Java中为方便中为方便GUI程序的开发,专门提程序的开发,专门提供多种进行图形用户程序开发的程序包。供多种进行图形用户程序开发的程
3、序包。如抽象窗口工具包如抽象窗口工具包AWT和和Swing等。等。2023/1/28JAVA 语言第10讲510.1GUI类类nJava提供了帮助创建图形用户界面提供了帮助创建图形用户界面程序的丰富的类库程序的丰富的类库:n容器类:JFrame,JPanel,JAppletnUI组件类:JButton,JTextField,JComboBox,JList,JMenu等n帮助类:Graphics,Color,Font,Demision,LayoutManager等2023/1/28JAVA 语言第10讲n用这些类库中的类(框架、面板、标签、用这些类库中的类(框架、面板、标签、按钮、文本框、组合框
4、、复选按钮、菜按钮、文本框、组合框、复选按钮、菜单、滚动条等)构造用户界面,这些类单、滚动条等)构造用户界面,这些类又称为又称为GUI类。类。nGUI类存放在类存放在java.awt和和javax.swing包中,编程时需要导入。包中,编程时需要导入。importjava.awt.*;或或importjavax.swing.*;2023/1/28JAVA 语言第10讲设计设计GUI应用程序的流程:应用程序的流程:(1)引用需要的包和类。)引用需要的包和类。(2)设置一个顶层的容器。)设置一个顶层的容器。(3)根据需要为容器设置布局管理器或使用默)根据需要为容器设置布局管理器或使用默认布局管理器
5、。认布局管理器。(4)将组件添加到容器内,位置自行设计。)将组件添加到容器内,位置自行设计。(5)为响应事件的组件编写事件处理代码。)为响应事件的组件编写事件处理代码。2023/1/28JAVA 语言第10讲10.2框架框架n创建图形用户界面程序的第一步是创创建图形用户界面程序的第一步是创建一个容器类,以容纳其他要显示的组件建一个容器类,以容纳其他要显示的组件主界面主界面(框架框架)。在这个容器中放入其在这个容器中放入其他一些图形用户界面组件从而组成一个功他一些图形用户界面组件从而组成一个功能完善的程序。能完善的程序。n在在Java程序中可用于主界面的类主要有两程序中可用于主界面的类主要有两个
6、:个:简单窗口类简单窗口类JWindow框架窗口类框架窗口类JFrame类类2023/1/28JAVA 语言第10讲JFrame.Content paneJPanelJPanelJButtonJLabel中间层容器Swing件组层次关系顶层容器2023/1/28JAVA 语言第10讲10.2.1创建框架创建框架nJFramenSwing应用程序的窗口组件类,是Swing中最常使用的容器组件,可以添加其它容器和添加其它组件nJFrame类构造方法:类构造方法:npublicJFrame()npublicJFrame(StringTitle)nJFrame类常用方法:类常用方法:npublicCo
7、ntainergetContentPane()npublicvoidsetDefaultCloseOperation(intoperation)2023/1/28JAVA 语言第10讲方法方法setDefaultCloseOperation(intoperation)的参数的参数operation取以下取以下4个个常量之一:常量之一:nDO_NOTHING_ON_CLOSEnHIDE_ON_CLOSE(默认)nDISPOSE_ON_CLOSEnEXIT_ON_CLOSE2023/1/28JAVA 语言第10讲JFrame类常用方法(2)vsetIconImagesetIconImage窗口最小
8、化。窗口最小化。vsetTitlesetTitle设置窗口中标题栏的文字。设置窗口中标题栏的文字。vsetResizablesetResizable设设置置用用户户是是否否可可以以改改变变框框架大小。架大小。vdisposedispose方方法法关关闭闭窗窗口口,并并回回收收该该窗窗口口的所有资源。的所有资源。vsetLocationsetLocation设置组件的位置。设置组件的位置。vsetBounds重新设置组件的大小和位置。重新设置组件的大小和位置。vsetVisiblesetVisible 设置框架是否可视设置框架是否可视2023/1/28JAVA 语言第10讲【例10.1】显示一个
9、空框架 FirstFrame.javaimport javax.swing.*;public class FirstFrame public static void main(String args)SimpleFrame frame=new SimpleFrame();/设置用户关闭框架时的响应动作frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/显示该框架 frame.show();class SimpleFrame extends JFramepublic SimpleFrame()/设置框架大小 setSize(WIDTH,HE
10、IGHT);public static final int WIDTH=300;public static final int HEIGHT=200;运行结果2023/1/28JAVA 语言第10讲nch10TestFrame.java2023/1/28JAVA 语言第10讲容器的分类容器的分类1、容器、容器(Container类类)容器通过使用一些设计管理器容器通过使用一些设计管理器,主要负责布置它主要负责布置它所包含的组件的位置。所包含的组件的位置。Container类允许别的类允许别的Component对象嵌套在的对象嵌套在的Container类对象中。类对象中。2、顶层容器、顶层容器J
11、Frame:一个使用一个使用Swing的独立图形用户界面应用程序的独立图形用户界面应用程序至少有一个使用至少有一个使用JFrame作为根的包含层次作为根的包含层次JApplet:基于基于Swing的的Applet至少有一个包含层次,至少有一个包含层次,其根是其根是JApplet3、中间层容器、中间层容器2023/1/28JAVA 语言第10讲10.2.2在框架内添加组件在框架内添加组件v如果需要将一些图形用户界面元素加入到框架中,则要在面板组件(JPanel)中进行绘制,然后将该面板组件加入到框架的内容窗格(ContentPane)中:v/得到得到JFrame的内容窗格对象的内容窗格对象vCo
12、ntainer contentPane=getContentPane();vComponent c=.;v/将组件加入到内容窗格中将组件加入到内容窗格中vcontentPane.add(c);v面板JPanel类本身是容器,它可以容纳其他图形用户界面元素,如按钮、菜单等。2023/1/28JAVA 语言第10讲/TestFrame.javaclass SimpleFrame extends JFramepublic static final int WIDTH=300;public static final int HEIGHT=200;public SimpleFrame(String ti
13、tle)super(title);/设置框架大小 setSize(WIDTH,HEIGHT);JButton btnOk=new JButton(确定);getContentPane().add(btnOk);2023/1/28JAVA 语言第10讲10.3布局管理布局管理n为了使图形用户界面具有良好的平台无关性,为了使图形用户界面具有良好的平台无关性,提供了专门用来管理组件在容器中的布局的提供了专门用来管理组件在容器中的布局的工具。工具。nJava的的GUI组件被放置在容器中,然后由组件被放置在容器中,然后由容器的布局管理器对它们的位置和大小进行容器的布局管理器对它们的位置和大小进行管理。管
14、理。n在程序中,如果没有指定布局管理器,默认在程序中,如果没有指定布局管理器,默认的布局管理器就将组件其放置到框架的中央。的布局管理器就将组件其放置到框架的中央。2023/1/28JAVA 语言第10讲nJava共有共有6种基本的布局管理器,它们分别为:种基本的布局管理器,它们分别为:-FlowLayout(流式布局)流式布局)-GridLayout(网格布局)(网格布局)-BorderLayout(边界布局)(边界布局)-CardLayout(卡片布局)(卡片布局)-GridBagLayout(网格包布局)(网格包布局)-null(空布局)(空布局)。n容器类默认的容器类默认的布局管理器为布
15、局管理器为FlowLayout。2023/1/28JAVA 语言第10讲10.3.1 FlowLayout布局管理器组件从左上角开始按从左到右、从上到下的方式排组件从左上角开始按从左到右、从上到下的方式排列列FlowLayout的构造函数:的构造函数:-FlowLayout():生成一个默认的流式布局生成一个默认的流式布局-FlowLayout(intalignment):可以设定每一行可以设定每一行组件的对齐方式组件的对齐方式-FlowLayout(intalignment,inthorz,intvert):可以设定组件间的水平和垂直距离可以设定组件间的水平和垂直距离vApplet和面板的缺
16、省布局:和面板的缺省布局:FlowLayout mylayout=new FlowLayout();FlowLayout exLayout=new FlowLayout(FlowLayout.RIGHT);setLayout(exlayout);/为容器设置新布局为容器设置新布局 Container contentPane=getContentPane();/增加相增加相应应的按的按钮钮for(int i=0;i buttons;i+)JButton addButton=new JButton(add+i);contentPane.add(addButton);2023/1/28JAVA 语言
17、第10讲nch10TestLayoutFrame.java2023/1/28JAVA 语言第10讲10.3.2 GridLayout布局管理器GridLayout的构造函数:的构造函数:-GridLayout():生成一个单列的网格布局生成一个单列的网格布局-GridLayout(introw,intcol):生生成成一一个个指指定定行行数数和列数的网格布局,水平和垂直间距为和列数的网格布局,水平和垂直间距为0-GridLayout(introw,intcol,inthorz,intvert):生生成成一一个个指指定定行行数数和和列列数数的的网网格格布布局局及及组组件件的的水水平和垂直间隔。平
18、和垂直间隔。l用于将容器区域划分为一个矩形用于将容器区域划分为一个矩形网格组件按行和列排列网格组件按行和列排列.Button btn;/声明按钮数组声明按钮数组 String str=1,2,3,4,5,6,7,8,9;setLayout(new GridLayout(3,3);btn=new Buttonstr.length;/创建按钮数组创建按钮数组 for(int i=0;istr.length;i+)btni=new Button(stri);add(btni);2023/1/28JAVA 语言第10讲nch10TestGridLayout.java2023/1/28JAVA 语言第1
19、0讲10.3.3 BorderLayout布局管理器BorderLayout的构造函数:的构造函数:-BorderLayout():生成默认的边界布局生成默认的边界布局-BorderLayout(inthorz,intvert):可可以以设设定定组组件间的件间的水平和垂直距离水平和垂直距离窗口窗口、框架和对话框等的缺省布局框架和对话框等的缺省布局组件被置于容器的北、南、东、西或中间位置组件被置于容器的北、南、东、西或中间位置.setLayout(new BorderLayout();setLayout(new BorderLayout();Button btnEast=new Button(B
20、utton btnEast=new Button(东东););Button btnWest=new Button(Button btnWest=new Button(西西););Button btnNorth=new Button(Button btnNorth=new Button(北北););Button btnSouth=new Button(Button btnSouth=new Button(南南););Button btnCenter=new Button(Button btnCenter=new Button(中中););add(btnEast,BorderLayout.EAST
21、);add(btnEast,BorderLayout.EAST);add(btnWest,BorderLayout.WEST);add(btnWest,BorderLayout.WEST);add(btnNorth,BorderLayout.NORTH);add(btnNorth,BorderLayout.NORTH);add(btnSouth,BorderLayout.SOUTH);add(btnSouth,BorderLayout.SOUTH);add(btnCenter,BorderLayout.CENTER);add(btnCenter,BorderLayout.CENTER);202
22、3/1/28JAVA 语言第10讲nch10TestBorderLayout.java2023/1/28JAVA 语言第10讲10.3.4 CardLayout布局管理器可存储几个不同的布局。可存储几个不同的布局。每个布局就像是一个卡片组中的一张卡片。每个布局就像是一个卡片组中的一张卡片。在一个给定的时间总会有一张卡片在顶层。在一个给定的时间总会有一张卡片在顶层。卡片通常为一个卡片通常为一个JPanel对象。对象。每当需要许多面板切换,而每个面板需要显每当需要许多面板切换,而每个面板需要显示为不同布局时,可以使用卡片布局。示为不同布局时,可以使用卡片布局。2023/1/28JAVA 语言第10
23、讲nCardLayout提供了两种构造函数:提供了两种构造函数:nCardLayout()nCardLayout(inthorz,intvert)n第第一一种种形形式式生生成成了了一一个个默默认认的的卡卡片片布布局局管管理理器器。第第二二种种形形式式分分别别在在horz和和vert中中设设定定控控件件之之间间的水平和垂直间隔。的水平和垂直间隔。2023/1/28JAVA 语言第10讲主要方法nvoidadd(ComponentpanelObj,Objectname);n在生成一副牌之后,通过调用由在生成一副牌之后,通过调用由CardLayout定义的下列方法之一来激活一张卡片:定义的下列方法之
24、一来激活一张卡片:nvoid first(Container deck)nvoid last(Container deck)nvoid next(Container deck)nvoid previous(Container deck)nvoid show(Container deck,String cardName)n演示演示TestCardLayout.java2023/1/28JAVA 语言第10讲10.3.5 GridBagLayout布局管理器每个每个GridBagLayout对象维持一个动态的对象维持一个动态的矩形单元网格,每个组件占用一个或多个这矩形单元网格,每个组件占用一个或多
25、个这样的单元,称为显示区域。样的单元,称为显示区域。构造函数:构造函数:GridBagLayout()使用使用GridBagLayout和和GridBagConstaints辅助辅助类类GridBagLayout管理的每个组件都与GridBagConstaints对象关联2023/1/28JAVA 语言第10讲GridBagConstraints类中包含类中包含用来定位及用来定位及调整组件大小所需的全部信息。调整组件大小所需的全部信息。组件大小不必相同 组件按行和列排列 放置顺序不一定为从左至右和由上至下获得获得GridBagLayout:GridBagLayout gb=new GridBa
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- javaGUI 程序设计
限制150内