JAVA图形用户界面设计与实现.ppt
《JAVA图形用户界面设计与实现.ppt》由会员分享,可在线阅读,更多相关《JAVA图形用户界面设计与实现.ppt(68页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、图形用户界面的设计与实现图形用户界面的设计与实现教材第教材第7章章 设计原则 容器与布局 标准组件 事件处理 自定义成分用户界面设计原则用户界面设计原则n使用使用图形界面形界面GUI(GraphicsUserInterface)v字符界面字符界面采用命令行方式与用采用命令行方式与用户交互。交互。v图形界面形界面用多种媒体用多种媒体显示信息,用直示信息,用直观、方便的、方便的GUI标准准组件来接收命令。件来接收命令。n控制控制权在用在用户(用(用户要由操作的主要由操作的主动权)n界面与操作的界面与操作的风格一致性。格一致性。n宽容(容容(容错)性。)性。n简洁与美与美观并重。并重。界面构成界面构
2、成容器标准组件用户自定义成分v创建GUI各组成成分,并安排相互 位置关系(包含,相邻,相交)。v定义GUI各成分对不同事件的响应,实现与用户的交互与界面功能。界面元素界面元素n容器是用来容器是用来组织其他界面成分和元素的其他界面成分和元素的单元。元。v可以形成容器的可以形成容器的层次,构筑复次,构筑复杂结构构vWindow(Frame、Applet、Dialog)n组件件是是图形形用用户界界面面的的基基本本单位位,它它里里面面不不再再包包含含其他的成分。其他的成分。vGUI组件是件是图形用形用户界面界面标准化的准化的结果。果。vGUI组件的作用是完成与用件的作用是完成与用户的交互。的交互。n用
3、用户自定自定义成分成分v文字、文字、图形、形、图象象v不能像不能像标准准组件一件一样被系被系统识别和承和承认,只起装,只起装饰作用。作用。v不能响不能响应用用户的的动作,不具有交互功能。作,不具有交互功能。AWT包包nAbstractWindowsToolkit(抽象窗口工具)(抽象窗口工具)vAWT类库中的各种操作是被定中的各种操作是被定义为在一个并不存在的在一个并不存在的“抽象窗口抽象窗口”中中进行的。行的。v抽取不同抽取不同软硬件平台中所硬件平台中所实现的窗口的公共特性。的窗口的公共特性。v所所设计的界面独立于具体的界面的界面独立于具体的界面实现。n提供与机器无关的基本提供与机器无关的基
4、本GUI标准准组件。件。v选择类组件:件:单选按按钮、复、复选框、下拉框、下拉选单、列表框、列表框v文字文字处理理类组件:件:标签、文本框、文本框、编辑框框v命令命令类组件:件:按按钮、工具、工具栏、菜、菜单AWT类层次关系图类层次关系图ComponentContainerPanelAppletWindowFrameDialogButtonTextFieldTextAreaTextComponentCheckboxMenuComponentMenuMenuItemMenuBar其他组件独立不独立Component类类可可显示在屏幕上的示在屏幕上的图形形对象,可与用象,可与用户交互。交互。n方法
5、:方法:vadd(PopupMenuadd(PopupMenupopup)popup)加一加一弹出菜出菜单vaddFocusListener(FocusListeneraddFocusListener(FocusListenerl)l)将将发生在本生在本组件上的件上的事件注册事件注册给监听者,以听者,以进行事件行事件处理。理。vsetSize(intsetSize(intwidth,intwidth,intheight)height)设置置组件尺寸件尺寸vpainpaint(Graphics(Graphicsg)g)重画重画组件件vsetFont(FontsetFont(Fontf)f)设置置
6、组件字体件字体vsetBackground(ColorsetBackground(Colorc)c)设置置组件背景色件背景色vsetForeground(ColorsetForeground(Colorc)c)设置置组件前景色件前景色paint和和repaint方法方法n某某组件的件的paint()和和update()为系系统自自动调用的有关用的有关图形形绘制的方法,不可人制的方法,不可人为编程程调用;但可用;但可编程重程重新定新定义其操作内容。其操作内容。n使用使用repaint()方法可以触方法可以触发update()方法。方法。paint()当某些操作破坏了显示,需重新绘制时第一次绘制r
7、epaint()编程控制1.擦除并填充成背景色update()调用2.调用paint()Font类类n n设计字体字体显示效果(示效果(创建字体建字体对象)象)Fontfn=newFont(String字体,字体,int风格,格,int字号字号);v字体:字体:TimesRoman,Courier,Arial等等v风格:三个常量格:三个常量Font.PLAIN,Font.BOLD,Font.ITALICv字号:字的大小(磅数)字号:字的大小(磅数)n使用字体使用字体对象象如如设置某置某组件当前使用的字体:件当前使用的字体:setFont(Fontfn)n获取取组件当前使用的字体:件当前使用的字
8、体:getFont()Color类类构造函数构造函数1(设置置颜色)色)Colorc=newColor(intred,intgreen,intblue)范范围:0255newColor(200,200,200)newColor(255,0,100)n构造函数构造函数2Colorc=newColor(intrgb)兰色:色:07位位绿色:色:815位位红色:色:1623位位n颜色常量色常量值public static final Color public static final Color blackColor.black,Color.blue,Color.gray,Color.redColo
9、r.whiteContainers容器组件容器组件nWindow不需要其他不需要其他组件支撑,独立件支撑,独立显示。示。vFramevDialog没有菜没有菜单条,不能改条,不能改变大小大小nPanel必必须放在放在Window组件中(或件中(或Web浏览器窗口)才能器窗口)才能显示。它示。它为一矩形区域,在其中可一矩形区域,在其中可摆放其他放其他组件,可以有自己的布局管理器。件,可以有自己的布局管理器。n基本方法基本方法vadd(Componentcomp)将指定将指定组件放到容器中件放到容器中vadd(Componentcomp,intindex)vremove(Componentcomp
10、)删除指定除指定组件件vsetLayout(LayoutManagermgr)设置容器布局置容器布局vpaint画容器(及其上面的画容器(及其上面的组件)件)容器的组件布局容器的组件布局n依靠布局管理器(依靠布局管理器(layoutmanager)方式方式v调用容器的用容器的setLayout方法,方法,为容器指定某种布局管理器容器指定某种布局管理器的一个的一个对象。象。例:例:setLayout(newFlowLayout()v该布局管理器布局管理器对象象负责确定容器中确定容器中组件的位置和大小。件的位置和大小。v当容器需要定位当容器需要定位组件和确定件和确定组件大小件大小时,就会,就会给布
11、局管理布局管理器器对象象发消息,消息,让它完成它完成该项工作。工作。n直接管理直接管理组件方式件方式v调用容器的用容器的setLayout(null)方法,关方法,关闭布局管理器。布局管理器。v调用每一个用每一个组件的件的setLocation()方法决定方法决定组件位置。件位置。v调用每一个用每一个组件的件的setSize()方法决定其大小。方法决定其大小。n直接管理直接管理组件将失去平台无关性。件将失去平台无关性。布局管理器对象布局管理器种类布局管理器种类nFlowLayout:组件在一行中从左至右水平排列,排件在一行中从左至右水平排列,排满后折行后折行nBorderLayout:北、南、
12、:北、南、东、西、中、西、中nGridLayout:以行和列的网格形式安排:以行和列的网格形式安排组件件nGridBagLayout:更复:更复杂、功能更、功能更强的网格布局的网格布局nCardLayout:每一个:每一个组件作件作为一个卡片,容器一个卡片,容器仅显示多个卡片中的某一个示多个卡片中的某一个确定容器布局确定容器布局n缺缺省的布局管理器省的布局管理器vWindow、Frame、DialogBorderLayoutvPanel、AppletFlowLayout:n选择布局管理器的方法布局管理器的方法v建立布局管理器建立布局管理器类的的对象象v利用容器的利用容器的setLayout为容
13、器指定布局(即指定一个布容器指定布局(即指定一个布局管理器的局管理器的对象)象)例:将例:将myFrame布局布局设定定为FlowLayout类型型myFrame.setLayout(newFlowLayout();FramenFrame(Stringtitle)构造一个新的不可构造一个新的不可见的的framen隐含的布局管理器是:含的布局管理器是:BorderLayoutnsetLayout()设置新的布局管理器。置新的布局管理器。nadd(Componentcomp)在容器上增加一个在容器上增加一个组件(在容器件(在容器为不可不可见的状的状态时加)。加)。nvoidsetSize(intw
14、idth,intheight)nsetVisible(true)7-1aFramePanelFramefm1=newFrame(Hello);fm1.setSize(400,350);fm1.setBackground(Color.gray);fm1.setLayout(null);Panelpn1=newPanel();pn1.setSize(100,100);pn1.setBackground(Color.red);pn1.setLocation(0,50);fm1.add(pn1);fm1.setVisible(true);7-1bFlowLayout布局管理器布局管理器n构造函数:构造
15、函数:vFlowLayout();vFlowLayout(intalign,inthgap,intvgap);align:对齐方式:方式:LEFTCENTERRIGHThgap:组件水平件水平间距距(象素)(象素)vgap:组件垂直件垂直间距(象素)距(象素)n无参数的构造函数无参数的构造函数创建的建的FlowLayout对象,其象,其对齐方式方式为CENTER居中方式,居中方式,组件件间的横的横纵间距都距都为5个像素。个像素。FlowLayout布局管理器布局管理器Framef=newFrame(FlowLayout);f.setSize(400,300);/不起作用不起作用f.setBac
16、kground(Color.gray);f.setLayout(newFlowLayout(FlowLayout.LEFT,10,20);b1=newButton(button1);b2=newButton(button2);b3=newButton(button3);f.add(b1);f.add(b2);f.add(b3);f.setVisible(true);f.pack();7-1cBorderLayout布局管理器布局管理器nsetLayout(newBorderLayout()nadd(b1,BorderLayout.NORTH);n当容器大小改当容器大小改变,组件相件相对位置不会
17、改位置不会改变。CenterNorthSouthWestEastBorderLayout布局管理器布局管理器f=newFrame(BorderLayout);f.setSize(200,200);b1=newButton(button1);b5=newButton(button5);f.add(b1,BorderLayout.NORTH);f.add(b2,BorderLayout.SOUTH);f.add(b3,BorderLayout.WEST);f.add(b4,BorderLayout.EAST);f.add(b5,BorderLayout.CENTER);f.setVisible(t
18、rue);7-1dBorder-PanelclassMyFrameextendsFrameMyFrame()Buttonb1=newButton(1);Buttonb2=newButton(2);Buttonb3=newButton(3);Buttonb4=newButton(4);Panelp=newPanel();p.add(b1);p.add(b2);add(p,BorderLayout.NORTH);add(b3,BorderLayout.WEST);add(b4,BorderLayout.CENTER);pack();setVisible(true);7-1eGridLayout布局
19、管理器布局管理器n创建建GridLayout对象作象作为布局布局编辑器,指定划分网器,指定划分网格的行数和列数格的行数和列数(网格大小一网格大小一样)。)。setLayout(newGridLayout(行数行数,列数列数);setLayout(newGridLayout(行数行数,列数列数,行行间隔隔,列列间隔隔);n调用容器的方法用容器的方法add()将将组件加入容器,件加入容器,组件填入容件填入容器的器的顺序将按照第一行第一个格中、第一行第二个序将按照第一行第一个格中、第一行第二个格中、格中、n每个网格中都必每个网格中都必须填入填入组件,如果希望某个网格件,如果希望某个网格为空白,可以空
20、白,可以为它加入一个空的它加入一个空的标签:add(newLabel();GridLayout布局管理器布局管理器f=newFrame(GridLayout);f.setLayout(newGridLayout(2,3);f.setSize(200,100);f.setBackground(Color.gray);b1=newButton(1);b6=newButton(6);f.add(b1);f.setVisible(true);7-1f布局例布局例Framefm=newFrame()fm.setLayout(newFlowLayout();tf=newTextField(22);fm.a
21、dd(tf);Panelp1=newPanel();p1.setLayout(newGridLayout(4,3);p1.add();Panelp2=newPanel();p2.setLayout(newGridLayout(4,3);p2.add();fm.add(p1);fm.add(p2);7-2布局GridBagLayout布局管理器布局管理器n每个每个GridBagLayout对象象维护一个一个动态矩形网格,矩形网格,n每个每个组件可占据一个或多个件可占据一个或多个单元作元作为它的它的显示区域。示区域。n每一个每一个组件都与一个件都与一个GridBagConstraints类的的实例
22、相例相连,以指定在以指定在显示区域中如何示区域中如何摆放放,并可确定大小。并可确定大小。n步步骤:vsetLayout(newGridBagLayout();vGridBagConstraintsgbc=newGridBagConstraints();vgbc.gridx=0;(属性属性赋值)vadd(button1,gbc)GridBagLayout布局管理器布局管理器n设置置GridBagConstraints类实例属性例属性值:ngridxgridy组件件显示区域的左上角示区域的左上角单元格坐元格坐标ngridwidthgridheight指定指定显示区域行、列示区域行、列单元数元数nR
23、ELATIVE指定指定紧挨着前一个挨着前一个组件件摆放放nfill当当显示区域大于示区域大于组件件时如何如何扩充充组件:件:vHORIZONTAL水平充水平充满VERTICAL垂直充垂直充满vBOTH全部填充全部填充NONE不不调整(整(隐含)含)nipadxipady指定指定组件件间最小最小间隔隔nanchor当当显示区域大于示区域大于组件件时如何如何摆放放组件:件:vCENTER(隐含)含),NORTH,EAST,SOUTH,WEST,vSOUTHEAST,NORTHEAST,vSOUTHWEST,NORTHWEST.CardLayout布局管理器布局管理器n将每一个将每一个组件件视为一一
24、张卡片,同一卡片,同一时刻只能刻只能显示一示一个个组件。件。nsetLayout(newCardLayout()nCardLayout方法(按序指定方法(按序指定组件)件)vfirst(Containerparent)vlast(Containerparent)vprevious(Containerparent)vnext(Containerparent)nCardLayout方法方法(按名按名显示示组件)件)vaddLayoutComponent(Stringname,Componentc)vshow(Containerparent,Stringname)事件及处理机制事件及处理机制n用用户
25、操作操作GUI组件件时会引会引发各种事件。各种事件。n事件事件:描述:描述“发生了什么事情生了什么事情”的的对象。象。系系统根据用根据用户的操作构造出相的操作构造出相应事件事件类的的对象。象。n事件源:事件的事件源:事件的产生地。生地。n事件事件处理程序:是一个方法,它接收一个事件理程序:是一个方法,它接收一个事件对象,象,分析它,并完成分析它,并完成对该事件的事件的处理。理。n每个事件有一个相每个事件有一个相应的的监听者接口,它听者接口,它规定了能定了能够接收(并接收(并处理)理)该类事件的方法的事件的方法的规范。范。n监听者:听者:实现了了监听者接口的听者接口的类,它包含有事件,它包含有事
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 图形 用户界面 设计 实现
限制150内