JavaSE编GUI编程主讲:马剑威Email:finallym@yahoocnEmail:finally_m@yahoo.cn目标Java高端培训提ContentAWT提纲组件和容器布局管理器事件处理事件源、事件监听器、事件类型事件监听器接口和事件适配器内部类匿名类在Java事件处理中的应用AWT常用组件图形Java图形Graphics类和paint方法目标Java高端培训提ContentSwing提纲Swing常用组件的使用抽象窗口工具集(AWT)Java高端培训AWT(AbstractWindowToolkit)中包括了多种类和接口,用于在JavaApplication中进行GUI(GraphicalUserInterface图形用户界面)编程的各种如容按文本等由类GUI的各种元素(如:容器、按钮、文本框等)由java类来实现。使用AWT所涉及的类般在jt包及其子包中使用AWT所涉及的类一般在java.awt包及其子包中。主要类的继承关系Java高端培训ComponentMenuComponentjava.awt.Componentjava.awt.Containerjava.awt.PaneljlAlButtonCtiLabeljava.applet.Appletjava.awt.Windowjava.awt.DialogjtFContainerPanelWindowLabelListTextComponentjava.awt.Framejava.awt.Buttonjava.awt.CheckboxjavaawtLabelPanelAppletWindowFrameDialogTextComponentCheckboxChoicejava.awt.Labeljava.awt.Listjava.awt.TextComponentjavaawtMenuComponentChoiceCanvasScrollbarjava.awt.MenuComponentjava.awt.MenuBarjava.awt.MenuItemjavaawtMenu和ContainerJava高端培训Java的图形用户界面的昀基本组成部分是组件(Component),组件是一个可以以图形化的方式显示在屏幕上并能与用户进行交互的对象,例如一个按钮,一个标签等等。一般的组件不能独立地显示出来,必须将它放在某一容器中才可以显示出来。显示出来容器(Container)实际上是Component的子类,容器类对象具有组件的所有性质,还具有容纳其它组件和容器的功能。容器类对象可使用方法add()添加组件两种主要的容器类型Window:可自由停泊的顶级窗口Panel:可作为容器容纳其它组件,但不能独立存在,必须被添加到其它容器中(如Window或Applet)其它容器中(如Window或Applet)高端培训Frame类是抽象类Window的子类,Frame对象显示效果是一个“窗体”,带有标题和尺寸重置角标。Frame类的继承层次Frame的常用构造方法:Frame()Frame(Strings)创建指定标题的Frame对象常用方法Java高端培训常用方法setVisible(booleanb)//Frame默认初始化为不可见的setSize(intwidth,intheight)//设置窗体的大小tLti(itit)//设置窗体的位置是左上角的坐标setLocation(intx,inty)//设置窗体的位置,x、y是左上角的坐标setBounds(intx,inty,intwidth,intheight)//设置位置、宽度和高度setTitle(Stringname)//设置窗体的标题getTitle()setTitle(Stringname)//设置窗体的标题getTitle()setResizable(booleanb)//设置是否可以调整大小setBackground(Colorc)//设置背景颜色,参数为Color对象setLayout(LayoutManagermgr)//设置此容器的布局管理器,默认的布局管理器是BorderLayoutadd(Componentcomp)//将指定组件追加到此容器的尾部add(Componentcomp)//将指定组件追加到此容器的尾部dispose()//释放由此窗体及其拥有的所有子组件所使用的所有本机屏幕资源示例1Java高端培训importjava.awt.Color;importjavaawtFrame;importjava.awt.Frame;publicclassTestFrame{publicstaticvoidmain(String[]args){publicstaticvoidmain(String[]args){MyFrameframe=newMyFrame();}}}classMyFrameextendsFrame{publicMyFrame(){this.setTitle(第一个窗体);this.setTitle(第个窗体);this.setSize(200,300);this.setLocation(200,200);this.setBackground(Color.ORANGE);g();this.setResizable(false);this.setVisible(true);}TestFamejaa}TestFrame.java9PanelJava高端培训Panel对象可以看成可以容纳其它组件的空间Panel不能独立存在,依赖于其它容器Panel对象可以拥有自己的布局管理器Panel类的继承层次Panel的构造方法为:Panel的构造方法为:Panel()//使用默认的FlowLayout布局管理器创建新面板Pane(LayoutManagerlayout)//创建具有指定布局管理器的新面板类的常用方法Java高端培训Panel主要的常用方法还都是从父类中继承过来的方法setSize(intwidth,intheight)//设置大小setLocation(intx,inty)//设置窗体的位置,x、y是左上角的坐标tBd(itititidthithiht)//设置位置宽度和高度setBounds(intx,inty,intwidth,intheight)//设置位置、宽度和高度setBackground(Colorc)//设置背景颜色,参数为Color对象setLayout(LayoutManagermgr)//设置布局管理器setLayout(LayoutManagermgr)//设置布局管理器示例Java高端培训importjava.awt.Color;importjavaawtFrame;importjava.awt.Frame;importjava.awt.Panel;publicclassTestPanel{publicclassTestPanel{publicstaticvoidmain(String[]args){Frameframe=newFrame();framesetLayout(null);frame.setLayout(null);frame.setBounds(300,300,500,500);frame.setBackground(Color.BLUE);Panelpanel=newPanel();panel.setBounds(100,100,300,300);panel.setBackground(newColor(204,204,255));pg((,,));frame.add(panel);frame.setVisible(true);}TestPaneljaa}TestPanel.java12Toolkit类Java高端培训Toolkit抽象类是用于将各种组件绑定到本地系统的工具包。getDefalutToolkit()静态方法可以得到一个Toolkit的子类实例DimensiongetScreenSize()把屏幕尺寸作为一个Dimension实例返回ImagegetImage(URLurl)返回一幅图像该图像从指定文件中获取像素ImagegetImage(URLurl)返回幅图像,该图像从指定文件中获取像素数据,图像格式可以是GIF、JPEG或PNG目标Java高端培训提ContentAWT提纲组件和容器布局管理器布局管理器事件处理事件源、事件监听器、事件类型事件源事件听器事件类事件监听器接口和事件适配器内部类匿名类在Java事件处理中的应用AWT常用组件Java图形Graphics类和paint方法布局管理器Java高端培训为了使我们生成的图形用户界面具有良好的平台无关性,Java语言中,提供了布局管理器这个工具来管理组件在容器中的布局,而不是直接设置组件的位置和大小。每个容器都有一个布局管理器,当容器需要对某个组件进行定位或判断其大小尺寸时,就会调用其对应的布局管理器。调用Cti的tLt方法可以设置容器的布局管调用Container的setLayout方法可以设置容器的布局管理对象。AWT提供了5种布局管理器类AWT提供了5种布局管理器类:FlowLayoutBorderLayoutBorderLayoutGridLayoutCardLayoutGridBagLayout默认布局管理器Java高端培训ComponentContainerWindowPanelFrameDialogAppletBorderLayoutFlowLayout布局管理器Jav