您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 第9章 java入门教程 Applet和图形用户界面-
第九章图形用户界面Java语言程序设计Java程序语言设计2020/5/20第2页学习要点AppletGUIJava程序语言设计2020/5/20第3页什么是AppletJavaApplet是Java的一种可运行代码。JavaApplet在支持Java虚拟机的浏览器环境中运行。它是Java与Web相结合而引入的一种重要的Java应用形式。Java程序语言设计2020/5/20第4页Applet与ApplicationApplication和Applet是利用JAVA语言生成的可运行代码中最常用的两种Application和Applet的区别主要在于执行方式的不同Application以控制台方式运行,以main()方法作为程序执行的入口Applet本身不能直接运行,必须嵌入到浏览器中,由浏览器加载执行。Java程序语言设计2020/5/20第5页JavaApplet的基本框架Applet的基本框架由一套方法组成。它们提供了浏览器与Applet之间的接口以及二者执行控制的基本机制。publicvoidinit()publicvoidstart()publicvoidstop()publicvoidpaint(Graphicsg)publicvoiddestroy()Java程序语言设计2020/5/20第6页JavaApplet的生命周期初始态消亡态停止态运行态第一次载入调用init()方法运行调用start()方法调用stop()方法当浏览器图标化或打开另一页当浏览器从图标恢复或重新装入此页调用start()方法当前页面被关闭或浏览器关闭调用destroy()方法Java程序语言设计2020/5/20第7页Applet程序的运行方法一:JDK提供的浏览Applet的简易工具(JDK\bin目录):appletviewer方法二:用浏览器运行Java程序语言设计2020/5/20第8页Applet与GUIApplet类为JPanel的子类,而JPanel为Java图形用户界面中的一个组件。因此Applet可以使用图形化用户界面与用户进行数据交换。良好的用户界面是Applet的一个重要的优势。Java程序语言设计2020/5/20第9页JavaGUI简介AWT是Java基础类库的一个部分,AWT为大规模的GUI开发提供了较丰富的基础结构。Swing是在AWT的基础上产生,弥补了AWT中的缺陷,同时提供了更强的用户界面组件。Java程序语言设计2020/5/20第10页Java中的AWTAWT的初衷是支持Applet的用户界面AWT支持图形用户界面,主要功能包括用户界面组件事件处理模型图形和图像工具布局管理器Java程序语言设计2020/5/20第11页AWT组件Frame框架类Panel面板类Java程序语言设计2020/5/20第12页Frame框架类一般要生成一个窗口,通常用Window的子类Frame来进行实例化。Frame有标题、边框、菜单、大小等等。每个Frame的对象实例化以后,默认是不显示和最小化的,因此必须调用setSize()来设置大小,调用setVisible(true)来设置该窗口为可见的。框架类的许多方法都是从它的超类Window类及更上层的Container和Component类继承而来。Java程序语言设计2020/5/20第13页Panel面板类Panel是一种没有标题的容器。并且实例化后必须用Container的add方法加入到Window对象中。JavaApplication中,主要使用Frame做容器,在Frame上通过放置Panel面板来控制图形界面的布局。如果应用到浏览器中,则主要使用Applet来做容器。Applet是能够嵌入浏览器运行的特殊容器。Java程序语言设计2020/5/20第14页AWT中的组件所有AWT的组件都是抽象类Component或MenuComponent的子类。Component类封装了组件的通用方法和属性,如组件的大小、位置、前景色、背景色、边界、边框、可见性等,而MenuComponent主要为菜单设计。AWT中的组件中有一些组件可以包含其它组件,并使他们成为一个整体,称为容器,它们为类Container的子类每一个容器类组件都有一个布局管理器,布局管理器使得Java的用户管理界面具有良好的平台无关性。Java程序语言设计2020/5/20第15页AWT中的类层次结构java.lang.objectComponentMenuComponentLayoutManagerContainerJava程序语言设计2020/5/20第16页组件类的层次结构ComponentBottonCanvasCheckBoxChoiceContainerLabelListMenuComponentScrollBarTextComponentMenuBarMenuItemMenuPopupMeuCheckBoxMenuItemPanelFrameDialogAppletWindowScrollPaneJava程序语言设计2020/5/20第17页AWT中常用的布局管理器FlowLayoutBorderLayoutGridLayoutCardLayoutGridBagLayoutJava程序语言设计2020/5/20第18页FlowLayoutFlowLayout把包含的组件从左到右,从上到下,一个挨一个地放置到容器中,它是Panel和Applet的默认布局管理器组件排列时,它们之间的默认间距为5px,它们默认的对齐方式为中央对齐。FlowLayout的构造方法FlowLayout()FlowLayout(intalign)FlowLayout(intalign,inthgap,intvgap)Java程序语言设计2020/5/20第19页在Applet使用FlowLayout举例importjava.awt.*;importjava.applet.*;publicclassFlowLayoutTestextendsApplet{Buttonb1,b2,b3;TextFieldtf;Labellab;publicvoidinit(){b1=newButton(“ok”);b2=newButton(“open”);b3=newButton(“close”);tf=newTextField(“test”);lab=newLabel(“TestFlowLayout”);Java程序语言设计2020/5/20第20页setLayout(newFlowLayout(FlowLayout.LEFT,20,30));add(b1);add(b2);add(b3);add(tf);add(lab);}}HTML文件内容为appletcode=FlowLayoutTest.classwidth=350height=150/appletJava程序语言设计2020/5/20第21页举例说明(1)使用appletviewer运行FlowLayoutTest后的初始窗口如下:可以看出Applet中的组件是从左到右,从上到下依次排列Java程序语言设计2020/5/20第22页举例说明(2)当窗口大小被调整后,FlowLayout会自动重新调整组件的位置,如下图所示:Java程序语言设计2020/5/20第23页BorderLayoutBorderLayout按照东南西北中的方位排列组件,所以使用BorderLayout的组件中只能包含5个组件如果使用BorderLayout的组件在相同的方位上多次添加组件,则最后被添加的组件会被显示出来当BorderLayout的四周组件缺少时,中心组件将填充剩余部分。BorderLayout是Window、Frame、Dialog的默认布局管理器。Java程序语言设计2020/5/20第24页在Applet中使用BorderLayout举例importjava.awt.*;importjava.applet.*;publicclassBorderLayoutTestextendsApplet{ButtonbuttonNorth,buttonSouth,buttonWest,buttonEast,buttonCenter;publicvoidinit(){buttonNorth=newButton(North);buttonSouth=newButton(South);buttonWest=newButton(West);buttonEast=newButton(East);buttonCenter=newButton(Center);Java程序语言设计2020/5/20第25页setLayout(newBorderLayout());add(buttonNorth,BorderLayout.NORTH);add(buttonSouth,BorderLayout.SOUTH);add(buttonWest,BorderLayout.WEST);add(buttonEast,BorderLayout.EAST);add(buttonCenter,BorderLayout.CENTER);}}HTML文件内容为appletcode=BorderLayoutTest.classwidth=350height=350/appletJava程序语言设计2020/5/20第26页举例说明使用appletviewer执行BorderLayoutTest后,结果输出如下图Java程序语言设计2020/5/20第27页举例说明(2)当窗口大小被调整后,容器中的组件会根据最佳尺寸作调整,如:窗口被水平拉长后,南北组件会水平伸展,东西组件保持不变,中心组件将水平扩展,如下图所示Java程序语言设计2020/5/20第28页GridLayoutGridLayout是一个网格布局管理器,它使容器中的各个组件呈网格状布局GridLayout中的每个网格可容纳一个组件,同时网格中的组件会填满整个网格单元GridLayout的构造方法GridLayout()GridLayout(introws,intcols)//指定网格的行数、列数GridLayout(introws,intcols,inthgap,intvgap)//指定网格的行数、列数、行间距、列间距Java程序语言设计2020/5/20第29页在Applet中使用GridLayout举例importjava.awt.*;importjava.applet.*;publicclassGridLayoutTestextendsApplet{Button[]bs;publicvoidinit(){bs=newButton[7];setLayout(newGridLayout(3,3,10,10));for(inti=0;ibs.length;i++){bs[i]=newButton(Integer.toString(i));add(bs[i]);}}}Java程序语言设计2020/5/20第30页举例说明使用appletviewer执行GridLayoutTest后,结果如下图所示Java程序语言设计2020/5/20第31页CardLayoutCardLayout以“卡片”格式将容器所包含的组件“叠放”在一起,任何时候只有其中一个组件能够被显示出来。CardLayout使得多个组件共享一个显示空间。被添加到使用CardLayout的容器中的组件按照被添加的顺序排列,即按照add()方法被调用的顺序进行排列。Java程序语言设计2020/5/20第32页CardLayout的常用方法first(Containerparent)//显示第一个被添加的组件next(Contain
本文标题:第9章 java入门教程 Applet和图形用户界面-
链接地址:https://www.777doc.com/doc-5477459 .html