您好,欢迎访问三七文档
第7章AWT主要内容AWT组件处理GUI事件AWT容器GUI应用Menus“HELLOWORLD”GUIAPPLET使用组件TextField显示”Helloagain”:1.importjava.applet.Applet;2.importjava.awt.*;3.4.publicclassHelloWorldGUIextendsApplet{5.6.TextFieldtf=newTextField(“Helloagain”);7.8.publicvoidinit(){9.add(tf);10.}11.}TextField:java.awt方法add将TextField加入applet.AWT组件AWT包中GUI组件:•TextField•Button•Checkbox•Choice•Scrollbar•List•Label•TextArea•Canvas•RadioButton•ButtonGroupGUIAPPLET1.importjava.applet.Applet;2.importjava.awt.*;3.4.publicclassSomeComponentsextendsApplet{5.6.Buttonbtn=newButton(“AButton”)7.Checkboxcb=newCheckbox(“IAgree”);8.TextFieldtf=newTextField(“TextField”);9.Labellbl=newLabel(“JustaLabel”);10.11.publicvoidinit(){12.add(btn);13.addcb);14.add(tf);15.add(lbl);16.}17.}小结与平台无关的GULs:Java程序应该是平台无关的.不同计算机有不同的窗口系统,有不同的GUI控制,产生不同的事件.Java定义AWT(abstractwindowingtoolkit),建立一个标准的组件和事件集。Java程序要使用AWT组件和处理AWT事件,与本地窗口系统无关.JavaAWT包是java程序与本地窗口系统的连接桥梁.从组件获取发生的事件Button和ActionListenero当点击button,会产生一个事件ActionEvent,同时将该事件送给它的监听器ActionListener.1.importjava.applet.Applet;2.importjava.awt.*;3.importjava.awt.event.*:4.5.publicclassButtonActionextendsApplet{6.intcounter=0;7.Buttonb1=newButton(“0”);8.9.publicvoidinit(){10.ButtonHandlerh=newButtonHandler();11.b1.addActionListener(h);12.add(b1);13.}14.15.classButtonHandlerimplementsActionListener{16.publicvoidactionPerformed(ActionEvente){17.counter++;18.b1.setLabel(“”+counter);19.}20.}21.}从组件获取发生的事件使用组件的两种方法:1.将监听器绑定到组件上(line11).2.读取/设置组件的属性(line18).从组件获取发生的事件Button和MouseEvents可以将鼠标监听器MouseListener绑定到组件上.Button和MouseEvents1.importjava.applet.Applet;2.importjava.awt.*;3.importjava.awt.event.*;4.5.publicclassMouseAndButtonextendsApplet{6.Buttonb1=newButton(“eventsyet”);7.8.publicvoidinit(){9.b1.addMouseListener(newML());10.add(b1);11.}12.13.classMLextendsMouseAdapter{14.publicvoidmouseEntered(MouseEvente){14.b1.setLabel(“MouseEntered”);}15.publicvoidmouseExited(MouseEvente){16.b1.setLabel(“MouseExited”);}17.}18.}小结事件EventsGUI组件被定义了专门的行为和状态,用于响应用户的操作通过在较鼠标点击层次高的某个逻辑层产生事件,来帮助程序员处理操作按钮可以通过鼠标点击来选择,也可以通过按键来选择.程序员关注的是事件发生,而不关心是谁使事件发生组件的嵌套组件可以放在一个Panel中,或其他容器中.为何不能将所有的组件放在容器的顶层Applet中?可以更好地控制组件.每个容器有各自不同的属性.组建集合可以被重复使用.使用PANELS两种panels可用于建立applet:AppletPanelJPanelButtonCheckboxJTextFieldJLabel1.importjavax.swing.*;2.importgava.awt.*;3.4.publicclassPanelsExampleextendsApplet{5.Buttonbtn=newButton(“AButton”);6.CheckBoxcb=newCheckBox(“Checkbox”);7.TextFieldtf=newTextField(“TextField”);8.Labellbl=newLabel(“ALabel”);9.10.Panelp1=newPanel();11.Panelp2=newPanel();12.13.publicvoidinit(){14.p1.add(btn);15.p1.add(cb);16.p1.setBackground(Color.green);17.18.p2.add(tf);19.p2.add(lbl);20.p2.setBackground(Color.red);21.22.add(p1);23.add(p2);24.setBackground(Color.black);25.}26.}使用PANELS一般建立Panel类的子类来组合组件可以建立一个“NestedGUI”,在一个panel1中放置另一个panel2,然后在panel2中放置panel3...容器容器是一种可以包含其他AWT组件的组件。Panel是一个容器.方法add用于将一个组件放入一个容器.AWT容器:Panel–一般在另一个容器中.Window–顶层窗口,是类Frame和类Dialog的父类Frame–有标题和边界的顶层窗口.Dialog–对话窗口,必须由上层窗口激活AWT组件继承树ObjectComponentButtonCanvasCheckboxChoiceContainerLabelListScrollbarTextPanelWindowTextAreaTextFieldAppletDialogFrameFileDialogAWT组件继承所有组件和容器都是类Component的子类.继承或重写了Component的所有方法(100多个方法).GUIAPPLICATIONS最小的GUIapplication:1.importjava.awt.*;2.3.classGUIApplicationWithFrame{4.publicstaticvoidmain(Stringargs[]){5.framef=newFrame();6.f.setSize(200,200);7.f.setVisible(true);8.}9.}•GUIapplication使用Frame对象作为它的主窗口.该frame的默认大小是多少?默认状态是否可见?•这里的程序没有…..?关闭FRAME/WINDOW1.importjava.awt.*;2.importjava.awt.*.event.*;3.4.classCloseTheWin{5.publicstaticvoidmain(Stringargs[]){6.newMyFrame(“ClosableFrame”);7.}8.}9.10.classMyFrameextendsFrame{11.MyFrame(Stringtitle){12.super(title);13.setSize(200,200);14.serVisible(true);关闭FRAME/WINDOW15.addWindowListener(newWinCloser());16.}17.18.classWinCloserextendsWindowAdapter{19.publicvoidwindowClosing(WindowEvente){20.setVisible(false);21.dispose();22.System.exit(0);23.24.}25.}26.}关闭FRAME/WINDOW窗口监听器WindowListener(或WindowAdapter)用于响应窗口关闭事件的。对windowClosing事件的响应依赖于应用程序.FRAMES和WINDOWSWindow是Frame的父类.Frame是一个有标题和边界的顶层窗口.Window是一个没有菜单栏和没有边界的顶层窗口,用于建立弹出菜单.当一个窗口不在使用时,应该关闭:Window.dispose();使用系统资源来建立和关闭窗口MENU和MENUBAR1.importjava.awt.*;2.3.classWinWithMenu{4.publicstaticvoidmain(Stringargs[]){5.Framef=newFrame();6.MenuBarmb=newMenuBar();7.MenuFileMenu=newMenu(“File”);8.MenueditMenu=newMenu(“Edit”);9.MenusubMenu=newMenu(“LastFiles”);10.MenuItemnewMItem=newMenuItem(“New”);11.MenuItemgif1MItem=newMenuItem(“Rose.gift”);12.MenuItemgif2MItem=newMenuItem(“Lion.gif”);13.ChecKboxMenuItemcbmi=newCheckboxMenuItem(“ReadOnly”);14.MENU和MENUBAR15.subMenu.add(gif1MItem);16.subMenu.add(gif2MItem);17.18.fileMenu.add(newMItem);19.fileMenu.add(subMenu);20.fileMenu.add(cbmi);21.22.mb.add(fileMenu);23.mb.add(editMenu);24.25.f.setMenuBar(mb);26.f.setSize(200,200);27.f.setVisible(true);28.}29.}MENU和MENUBAR对于Frame,可以使用方法setMenuBar添加Menubar例程中使用:Menu:“File”,“Edit”,“LastFiles”Menuitem:“New”,Rose.gif”,“Lion.gif”CheckboxMenuItem:“Readonly”ActionListener用于处理Menuitem的事件.MENU继承树MenuComponentMenuItemMenuBarMenuCheckboxMenuItem多个
本文标题:第7章 AWT组件
链接地址:https://www.777doc.com/doc-4582425 .html