第06章 图形用户界面_第1页
第06章 图形用户界面_第2页
第06章 图形用户界面_第3页
第06章 图形用户界面_第4页
第06章 图形用户界面_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

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

文档简介

Java2程序设计实用教程

第2版叶核亚《Java2程序设计实用教程》

(第2版)第1章Java概述第2章Java语言基础第3章面向对象的核心特性第4章接口、内部类和包第5章异常处理第6章图形用户界面第7章多线程第8章Applet应用程序第9章输入/输出流和文件操作第10章网络通信第11章数据库应用第12章JSP第13章综合应用设计第6章图形用户界面6.1Java图形用户界面初步6.2事件处理6.3布局管理6.4Swing组件6.5图形设计《Java2程序设计实用教程(第2版)》6.1Java图形用户界面初步6.1.1Java图形用户界面概述6.1.2AWT组件概述《Java2程序设计实用教程(第2版)》6.1.1Java图形用户界面概述图形用户界面概念图形用户界面(GraphicalUserInterface,GUI),使用图形方式借助菜单、按钮等标准界面元素和键盘、鼠标操作,实现人机交互。Java的AWT和Swingjava.awt包提供抽象窗口工具集(AbstractWindowTookit,AWT)。javax.swing包提供JDK1.2的Swing组件,它扩展了AWT组件的功能。《Java2程序设计实用教程(第2版)》6.1.2AWT组件概述图6.1java.awt包中主要类及组件类的继承关系《Java2程序设计实用教程(第2版)》6.1.2AWT组件概述组件publicabstractclassComponentextendsObjectimplementsImageObserver,MenuContainer,Serializable{publicvoidsetLocation(intx,inty) //设置组件位置

publicvoidsetSize(intwidth,intheight) //设置组件的宽度和高度

publicvoidsetVisible(booleanb)//设置组件是否显示}《Java2程序设计实用教程(第2版)》6.1.2AWT组件概述容器publicclassContainerextendsComponent{publicvoidsetLayout(LayoutManagermgr) //设置布局管理器

publicComponentadd(Componentcomp) //在容器中添加一个组件comp}《Java2程序设计实用教程(第2版)》6.1.2AWT组件概述窗口(window)和面板(panel)框架Frame和对话框Dialog框架publicclassFrameextendsWindowimplementsMenuContainer{publicFrame()publicFrame(Stringtitle)//参数title指定框架的标题

publicStringgetTitle()//获取框架的标题

publicvoidsetTitle(Stringtitle)//设置或修改框架的标题

publicvoidsetBackground(Colorc)//设置框架的背景颜色

publicvoidsetResizable(booleanresizable) //设置框架是否可变大小}《Java2程序设计实用教程(第2版)》6.1.2AWT组件概述对话框publicclassDialogextendsWindow{publicDialog(Frameowner) //owner指明拥有对话框的框架

publicDialog(Frameowner,Stringtitle) //title是对话框的窗口标题

publicDialog(Frameowner,booleanmodal) //modal指明该对话框是否为模式窗口

publicDialog(Frameowner,Stringtitle,booleanmodal)}《Java2程序设计实用教程(第2版)》6.1.2AWT组件概述标签publicclassLabelextendsComponentimplementsAccessible{publicstaticfinalintLEFT//左对齐,默认值

publicstaticfinalintCENTER//居中

publicstaticfinalintRIGHT//右对齐

publicLabel()publicLabel(Stringtext)//text指定显示字符串

publicLabel(Stringtext,intalignment) //alignment指定对齐方式

publicStringgetText()//获得显示字符串

publicvoidsetText(Stringtext)//设定显示字符串}《Java2程序设计实用教程(第2版)》6.1.2AWT组件概述文本行publicclassTextFieldextendsTextComponent{publicTextField()publicTextField(Stringtext)publicTextField(intcolumns)publicTextField(Stringtext,intcolumns)//text指定内容,columns指定列数}publicclassTextComponentextendsComponentimplementsAccessible{publicStringgetText() //获得文本行中的内容

publicvoidsetText(Stringt) //设置文本行中的内容

publicvoidsetEditable(booleanb)//设置文本行是否可编辑}《Java2程序设计实用教程(第2版)》6.1.2AWT组件概述按钮publicclassButtonextendsComponentimplementsAccessibl{publicButton(Stringlabel)//label指定按钮的标签}错误与异常类【例6.1】用户登录窗口。《Java2程序设计实用教程(第2版)》6.2事件处理6.2.1AWT的委托事件模型6.2.2AWTEvent事件类6.2.3事件监听器接口和事件适配器类《Java2程序设计实用教程(第2版)》6.2.1AWT的委托事件模型事件事件(event)是指一个状态的改变,或者一个活动的发生。例如,单击一个按钮,将产生单击事件等。事件类窗口事件类(WindowEvent)和单击事件类(ActionEvent)等事件源产生事件的组件称为事件源(eventsource)。《Java2程序设计实用教程(第2版)》6.2.1AWT的委托事件模型事件监听器事件源组件注册事件监听器publicclassButtonextendsComponentimplementsAccessibl{publicvoidaddActionListener(ActionListenerl)//注册单击事件监听器

publicvoidremoveActionListener(ActionListenerl) //取消注册单击事件监听器}例如,button.addActionListener(this); //为按钮注册单击事件监听器事件处理方法publicinterfaceActionListenerextendsEventListener

{publicvoidactionPerformed(ActionEvente);//单击事件处理方法}《Java2程序设计实用教程(第2版)》图6.3按钮单击事件的响应及处理流程《Java2程序设计实用教程(第2版)》6.2.1AWT的委托事件模型【例6.2】计算器程序雏形。按钮单击事件的响应和处理关闭窗口事件的响应和处理图形用户界面的运行由事件驱动不同组件的事件或同一组件的不同事件具有约定的执行次序。各组件的事件处理方法是否执行以及执行次序,取决于用户操作。在一个事件处理方法中,程序按照语句的书写次序顺序执行。《Java2程序设计实用教程(第2版)》6.2.2AWTEvent事件类图6.5AWT事件类及其层次结构《Java2程序设计实用教程(第2版)》6.2.2AWTEvent事件类publicclassEventObjectimplementsjava.io.Serializable

{publicObjectgetSource()//返回产生事件的事件源组件

publicStringtoString() //返回事件对象信息}publicclassActionEventextendsAWTEvent

{publicStringgetActionCommand() //获得按钮的标签}《Java2程序设计实用教程(第2版)》6.2.3事件监听器接口和事件适配器类事件监听器接口publicinterfaceComponentListenerextendsEventListener

{publicvoidcomponentResized(ComponentEvente);//改变组件大小publicvoidcomponentMoved(ComponentEvente);//移动组件

publicvoidcomponentShown(ComponentEvente);//显示组件

publicvoidcomponentHidden(ComponentEvente);//隐藏组件}publicinterfaceContainerListenerextendsEventListener

{publicvoidcomponentAdded(ContainerEvente);//添加组件

publicvoidcomponentRemoved(ContainerEvente);//移动组件}事件监听器接口的意义《Java2程序设计实用教程(第2版)》3.事件适配器类publicabstractclassWindowAdapterimplementsWindowListener,WindowStateListener,WindowFocusListener{publicvoidwindowOpened(WindowEvente){}publicvoidwindowClosing(WindowEvente){}publicvoidwindowClosed(WindowEvente){}publicvoidwindowIconified(WindowEvente){}publicvoidwindowDeiconified(WindowEvente){}publicvoidwindowActivated(WindowEvente){}publicvoidwindowDeactivated(WindowEvente){}publicvoidwindowStateChanged(WindowEvente){}publicvoidwindowGainedFocus(WindowEvente){}publicvoidwindowLostFocus(WindowEvente){}}《Java2程序设计实用教程(第2版)》4.组件类中注册事件监听器的方法publicabstractclassComponentextendsObjectimplementsImageObserver,MenuContainer,Serializable{publicvoidaddKeyListener(KeyListenerl)//注册键盘事件监听器

publicvoidremoveKeyListener(KeyListenerl)publicvoidaddMouseListener(MouseListenerl) //注册鼠标事件监听器

publicvoidremoveMouseListener(MouseListenerl)

publicvoidaddMouseMotionListener(MouseMotionListenerl) //注册鼠标移动事件监听器

publicvoidremoveMouseMotionListener(MouseMotionListenerl)}

《Java2程序设计实用教程(第2版)》【例6.3】显示一个三位整数的各位数字。文本行响应单击事件处理输入错误使用对话框窗口关闭事件不能委托其他类处理《Java2程序设计实用教程(第2版)》6.3布局管理6.3.1布局管理器类6.3.2容器的布局特性《Java2程序设计实用教程(第2版)》6.3.1布局管理器类FlowLayout(流布局管理器)publicclassFlowLayoutimplementsLayoutManager,java.io.Serializable

{publicstaticfinalintLEFT=0;//左对齐,类常量,全部大写

publicstaticfinalintCENTER=1; //居中

publicstaticfinalintRIGHT=2;//右对齐

publicFlowLayout() //构造方法,默认居中

publicFlowLayout(intalign)//align参数指定对齐方式

publicFlowLayout(intalign,int

hgap,int

vgap)//hgap、vgap参数指定组件之间水平和垂直间距(像素)}《Java2程序设计实用教程(第2版)》2.BorderLayout(边布局管理器)publicclassBorderLayoutimplementsLayoutManager2,java.io.Serializable

{publicstaticfinalStringNORTH="North";

publicstaticfinalStringSOUTH="South";publicstaticfinalStringEAST="East";publicstaticfinalStringWEST="West";publicstaticfinalStringCENTER="Center";//注意,字符串首字母大写publicBorderLayout()//构造方法,组件之间的间距为0像素

publicBorderLayout(int

hgap,int

vgap) //参数指定组件之间水平和垂直的间距(像素)}《Java2程序设计实用教程(第2版)》3.GridLayout(网格布局管理器)publicclassGridLayoutimplementsLayoutManager,java.io.Serializable

{publicGridLayout() //构造方法

publicGridLayout(introws,intcols) //参数指定行、列

publicGridLayout(introws,intcols,int

hgap,int

vgap)//后两个参数指定组件之间水平和垂直的间距(像素)}《Java2程序设计实用教程(第2版)》6.3.2容器的布局特性容器的默认布局管理器《Java2程序设计实用教程(第2版)》2.设置容器的布局管理器容器类提供设置布局管理器的方法frame1.setLayout(newFlowLayout(FlowLayout.LEFT);创建面板时可指定布局管理器publicclassPanelextendsContainerimplementsAccessible{publicPanel() //默认FlowLayout布局

publicPanel(LayoutManagerlayout) //layout指定布局管理器}容器类提供添加和移去组件的方法publicComponentadd(Componentcomp) //在容器中添加一个组件publicvoidadd(Componentcomp,Objectconstraints) //用于BorderLayout布局管理器publicComponentadd(Componentcomp,intindex) //用于GridLayout布局管理器《Java2程序设计实用教程(第2版)》6.4Swing组件6.4.1Swing组件关系概述6.4.2窗口组件6.4.3文本显示和编辑组件6.4.4按钮组件6.4.5列表框和组合框组件6.4.6菜单组件《Java2程序设计实用教程(第2版)》6.4.1Swing组件关系概述《Java2程序设计实用教程(第2版)》6.4.2窗口组件publicvoidsetDefaultCloseOperation(intoperation)publicinterfaceWindowConstants{publicstaticfinalintDO_NOTHING_ON_CLOSE=0;//什么也不做

publicstaticfinalintHIDE_ON_CLOSE=1; //隐藏窗口

publicstaticfinalintDISPOSE_ON_CLOSE=2; //隐藏当前窗口,释放窗口占用的其他资源

publicstaticfinalintEXIT_ON_CLOSE=3; //结束程序运行}jframe.setDefaultCloseOperation(EXIT_ON_CLOSE); //结束程序运行jdialog.setDefaultCloseOperation(HIDE_ON_CLOSE); //隐藏对话框而不结束程序运行《Java2程序设计实用教程(第2版)》6.4.3文本显示和编辑组件文本区publicclassJTextAreaextendsJTextComponent

{publicJTextArea()publicJTextArea(Stringtext)//参数text指定初始显示文本

publicJTextArea(introws,intcolumns) //rows、columns指定行数和列数

publicJTextArea(Stringtext,introws,intcolumns)}publicabstractclassJTextComponentextendsJComponentimplementsScrollable,Accessible{publicStringgetText() //获得文本行中的内容

publicvoidsetText(Stringt) //设置文本行中的内容

publicvoidsetEditable(booleanb) //设置文本行是否可编辑

publicboolean

isEditable() //判断文本行是否可编辑}《Java2程序设计实用教程(第2版)》6.4.3文本显示和编辑组件文本框的事件处理文本编辑事件类javax.swing.event.CaretEventpublicvoidaddCaretListener(CaretListenerl) //注册文本编辑事件监听器文本编辑事件监听器接口CaretListener中只有一个方法caretUpdate(CaretEvente)。

单击事件类ActionEvent《Java2程序设计实用教程(第2版)》6.4.4按钮组件复选框publicclassJCheckBoxextendsJToggleButtonimplementsAccessible{publicJCheckBox()publicJCheckBox(Stringtext)publicJCheckBox(Stringtext,booleanselected)}《Java2程序设计实用教程(第2版)》2.单选按钮publicclassJRadioButtonextendsJToggleButtonimplementsAccessible{publicJRadioButton()publicJRadioButton(Stringtext)publicJRadioButton(Stringtext,booleanselected)}publicclassButtonGroupextendsObjectimplementsSerializable //按钮组类{publicButtonGroup()publicvoidadd(AbstractButtonb) //添加按钮

publicvoidremove(AbstractButtonb)}《Java2程序设计实用教程(第2版)》3.抽象按钮类AbstractButtonpublicabstractclassAbstractButtonextendsJComponentimplementsItemSelectable,SwingConstants

{publicStringgetText()publicvoidsetText(Stringtext)publicboolean

isSelected() //返回是否选中状态

publicvoidsetSelected(booleanb) //设置是否选中状态

publicvoidsetEnabled(booleanb) //设置是否有效状态

publicObject[]getSelectedObjects() //返回选中对象数组

publicvoidaddActionListener(ActionListenerl)//注册按钮的单击事件监听器

publicvoidremoveActionListener(ActionListenerl)publicvoidaddItemListener(ItemListenerl)//注册按钮的选择事件监听器

publicvoidremoveItemListener(ItemListenerl)}《Java2程序设计实用教程(第2版)》4.选项按钮的选择事件处理publicvoidaddItemListener(ItemListenerl) //注册选择事件监听器《Java2程序设计实用教程(第2版)》6.4.5列表框和组合框组件列表框publicclassJListextendsJComponentimplementsScrollable,Accessible{publicJList()publicJList(finalObject[]listData) //列表框中的数据项由对象数组提供

publicint

getSelectedIndex() //返回第1个选中数据项的序号,从0开始;没有选中时返回-1publicObjectgetSelectedValue() //返回列表框第1个选中数据项对象;没有选中时返回nullpublicvoidsetListData(finalObject[]listData) //重新设置列表框中的数据项}例如,Objectarea[]={"南京市","苏州市","无锡市"};JList

list_user=newJList(area);《Java2程序设计实用教程(第2版)》2.组合框publicclassJComboBoxextendsJComponentimplementsItemSelectable,ListDataListener,ActionListener,Accessible{publicJComboBox()publicJComboBox(finalObjectitems[]) //组合框中的数据项由对象数组提供

publicvoidaddItem(Object

anObject) //添加数据项publicObjectgetSelectedItem() //返回选中数据项对象publicint

getSelectedIndex() //返回选中数据项索引}《Java2程序设计实用教程(第2版)》【例6.4】输入用户信息。框架窗口采取关闭时结束程序运行方式使用单选按钮组合框的选择事件处理《Java2程序设计实用教程(第2版)》6.4.6菜单组件使用菜单的两种方式窗口菜单快捷菜单《Java2程序设计实用教程(第2版)》2.菜单栏publicclassJMenuBarextendsJComponentimplementsAccessible,MenuElement{publicJMenuBar()publicJMenu

add(JMenuc) //添加菜单}Frame类提供setJMenuBar()方法将菜单栏放置在框架窗口上方,该方法声明如下:publicvoidsetJMenuBar(JMenuBar

menubar)《Java2程序设计实用教程(第2版)》3.菜单publicclassJMenuextendsJMenuItemimplementsAccessible,MenuElement{publicJMenu()publicJMenu(Strings) //s指定菜单标题

publicJMenuItem

add(JMenuItem

menuItem) //添加菜单项

publicComponentadd(Componentc)//添加组件

publicvoidaddSeparator()//添加分隔线}《Java2程序设计实用教程(第2版)》4.菜单项publicclassJMenuItemextendsAbstractButtonimplementsAccessible,MenuElement

{publicJMenuItem()publicJMenuItem(Stringtext) //text指定菜单标题

publicJMenuItem(Stringtext,Iconicon) //icon指定菜单图标

publicvoidsetAccelerator(KeyStroke

keyStroke) //设置快捷键}《Java2程序设计实用教程(第2版)》5.选择菜单项复选菜单项publicclassJCheckBoxMenuItemextendsJMenuItemimplementsSwingConstants,Accessible{publicJCheckBoxMenuItem()publicJCheckBoxMenuItem(Stringtext) //text指定标题

publicJCheckBoxMenuItem(Stringtext,booleanb) //b指定初始状态

publicJCheckBoxMenuItem(Stringtext,Iconicon,booleanb) //icon指定图标}《Java2程序设计实用教程(第2版)》5.选择菜单项单选菜单项publicclassJRadioButtonMenuItemextendsJMenuItemimplementsAccessible{publicJRadioButtonMenuItem()publicJRadioButtonMenuItem(Stringtext)publicJRadioButtonMenuItem(Stringtext,booleanselected)publicJRadioButtonMenuItem(Stringtext,Iconicon,booleanselected)}《Java2程序设计实用教程(第2版)》6.快捷菜单publicclassJPopupMenuextendsJComponentimplementsAccessible,MenuElement

{publicJPopupMenu()publicJMenuItem

add(JMenuItem

menuItem) //添加菜单项

publicvoidaddSeparator() //添加分隔线

publicvoidshow(Componentinvoker,intx,inty)//在(x,y)位置处显示快捷菜单,invoker指定快捷菜单所依附的组件}java.awt.Component组件类提供下列add()方法用于任何组件添加快捷菜单:publicvoidadd(PopupMenupopup) //添加快捷菜单《Java2程序设计实用教程(第2版)》【例6.5】文本编辑器。对话框采取关闭时隐藏方式使用窗口菜单使用快捷菜单使用java.awt.Font字体类当字号值不合适时抛出异常thrownewException(“SizeException”); //抛出异常对象catch(Exceptionex){if(ex.getMessage()=="SizeException") //捕获自己抛出的异常对象}《Java2程

温馨提示

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

评论

0/150

提交评论