您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 7-图形用户界面设计与实现
图形用户界面的设计与实现教材第7章JavaGUI对比容器与布局标准组件事件处理窗体JAVA中常见的图形用户界面组件库1.AWT(AbstractWindowsToolkit)是由JAVA通过对操作系统的自身的界面组件来完成界面渲染。库中的组件种类比较少、速度比较快。2.Swing界面组件的渲染完全由JAVA自身完成库中组件种类比较丰富、速度上稍有欠缺3.SWT是由Eclipse项目组开发的一套类似与AWT的组件库AWT中的组件构成ComponentContainerPanelAppletWindowFrameDialogButtonTextFieldTextAreaTextComponentCheckboxMenuComponentMenuMenuItemMenuBar其他组件独立不独立容器1.容器中提供了一个add()方法用于将组件添加到容器中。2.两个主要的容器类型:Window和Panel3.一个Window是一个可以显示屏幕上自由浮动的窗口。不需要其他组件支撑,独立显示。4.Panel这个容器必须存在于其他容器中才能显示。容器基本方法add(Componentcomp)将指定组件放到容器中add(Componentcomp,intindex)remove(Componentcomp)删除指定组件setLayout(LayoutManagermgr)设置容器布局paint画容器(及其上面的组件)组件在容器中的定位1.通过采用相应的布局管理器来定位容器中的组件。2.禁用容器的布局管理器setLayout(null);通过调用组件自身的setLocation():组件定位。setSize():定义大小。等方法来完成对组件的定位界面构成容器标准组件用户自定义成分Font类java.awt.Font设计字体显示效果(创建字体对象)Fontfn=newFont(String字体,int风格,int字号);字体:TimesRoman,Courier,Arial等风格:三个常量Font.PLAIN,Font.BOLD,Font.ITALIC字号:字的大小(磅数)使用字体对象-如设置某组件当前使用的字体:setFont(Fontfn)获取组件当前使用的字体:getFont()Color类构造函数1(设置颜色)Colorc=newColor(intred,intgreen,intblue)范围:0~255newColor(200,200,200)newColor(255,0,100)构造函数2Colorc=newColor(intrgb)兰色:0~7位绿色:8~15位红色:16~23位颜色常量值publicstaticfinalColorblackColor.black,Color.blue,Color.gray,Color.redColor.white…标准组件简介Label(标签)构造函数Labela=newLabel(“information”);Labela=newLabel(“information”,Label.CENTER);方法a.setText(“新内容”);设置标签内容Stringa.getText()读取标签内容Button(按钮)ButtonmyB=newButton(“Cancel”);TextField行编辑框组件构造函数TextFieldf1=newTextField(30);TextFieldf1=newTextField(“abc”,30);建30个字符宽的行编辑框方法:StringgetText()读文本框内容setText(“abc”)设置编辑框内容setEchoChar(charc)设置回显字符TextComponent方法:setEditable(false);selectAll()7-7计算器容器的组件布局依靠布局管理器(layoutmanager)方式调用容器的setLayout方法,为容器指定某种布局管理器的一个对象。例:setLayout(newFlowLayout())该布局管理器对象负责确定容器中组件的位置和大小。直接管理组件方式调用容器的setLayout(null)方法,关闭布局管理器。调用每一个组件的setLocation()方法决定组件位置。调用每一个组件的setSize()方法决定其大小。布局管理器对象布局管理器种类FlowLayout:组件在一行中从左至右水平排列,排满后折行BorderLayout:北、南、东、西、中GridLayout:以行和列的网格形式安排组件CardLayout:每一个组件作为一个卡片,容器仅显示多个卡片中的某一个确定容器布局缺省的布局管理器Window、Frame、Dialog——BorderLayoutPanel、Applet——FlowLayout:选择布局管理器的方法建立布局管理器类的对象利用容器的setLayout为容器指定布局(即指定一个布局管理器的对象)例:将myFrame布局设定为FlowLayout类型myFrame.setLayout(newFlowLayout());FlowLayoutimportjava.awt.*;publicclassTestFlowLayout{publicstaticvoidmain(Stringargs[]){Framef=newFrame(测试FlowLayout);f.setLayout(newFlowLayout());Buttonbtn1=newButton(确定);Buttonbtn2=newButton(打开);Buttonbtn3=newButton(关闭);f.add(btn1);f.add(btn2);f.add(btn3);f.setSize(300,100);f.setVisible(true);}}BorderLayoutimportjava.awt.*;publicclassTestBorderLayout{publicstaticvoidmain(Stringargs[]){Framef=newFrame(测试BorderLayout);f.setLayout(newBorderLayout());Buttonbtn1=newButton(确定);Buttonbtn2=newButton(打开);Buttonbtn3=newButton(关闭);f.add(North,btn1);f.add(South,btn2);f.add(West,btn3);f.setSize(300,100);f.setVisible(true);}}GridLayoutimportjava.awt.*;publicclassTestGridLayout{publicstaticvoidmain(Stringargs[]){Framef=newFrame(测试GridLayout);f.setLayout(newGridLayout(2,2));Buttonbtn1=newButton(确定);Buttonbtn2=newButton(打开);Buttonbtn3=newButton(关闭);f.add(btn1);f.add(btn2);f.add(btn3);f.setSize(300,100);f.setVisible(true);}}布局例Framefm=newFrame()fm.setLayout(newFlowLayout());tf=newTextField(22);fm.add(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布局事件及处理机制用户操作GUI组件时会引发各种事件。事件:描述“发生了什么事情”的对象。系统根据用户的操作构造出相应事件类的对象。事件源:事件的产生地。事件处理程序:是一个方法,它接收一个事件对象,分析它,并完成对该事件的处理。每个事件有一个相应的监听者接口,它规定了能够接收(并处理)该类事件的方法的规范。监听者:实现了监听者接口的类,它包含有事件处理程序。编程人员要为事件源指定监听者对象(即指定处理某种事件的事件处理程序-监听者对象方法)。鼠标单击按扭事件及处理机制ActionEvent事件引发publicvoidactionPerformed(ActionEvente)ActionListener接口ActionEvent事件监听者类监听者对象调用按扭的addActionListener()方法,为该按扭指定监听者。实现接口事件处理能力使一个组件具有事件处理能力大致可以分为如下三步:1、someComponent.addActionListener(instanceOfMyClass);2、publicclassMyClassimplementsActionListener{}3、publicvoidactionPerformed(ActionEvente){...//事件执行代码}图形用户界面编程过程确定编程用到的组件库(awt,swing,swt)确定界面布局1.自己布局(setLayout(null),再使用setLocation、setSize)2.使用布局管理器setLayout(newFlowLayout());setLayout(newBorderLayout());setLayout(newGridLayout());使用事件处理机制1.写监听者类classButtonListenerimplementsActionListener{publicvoidactionPerformed(ActionEvente)}2.事件源在监听者类上注册btn.addActionListener(newButtonListener)使用事件适配器例如:WindowAdapter窗口适配器将classFormListenerimplementsWindowListener{}改写为classFormListenerextendsWindowAdapter实例编写一个程序,在屏幕上显示带标题的窗口,并添加一个按钮。当用户单击按钮时,结束程序。设计程序实现:窗口包含文本行和标签,在文本行中输入一段文字并按回车键后,这段文字将显示在标签上。实例编写一程序,如下图所示,包含带菜单栏的窗体。要求单击右上角关闭按钮及菜单项的退出时能结束程序。图形用户界面例importjava.awt.*;importjava.awt.event.*;classMyFrameextendsFrame{Buttonbtn;MyFrame(){super(带按钮的窗体);btn=newButton(close);setLayout(newFlowLayout());setSize(200,100);add(btn);btn.addActionListener(newBprocess());setVisible(true);}}图形用户界面例classBprocessimplementsActionListener{publicvoidactionPerformed(ActionEvente){System.exit(0);}}publicclassTest{publicstaticvoidmain(Stringargs[]){MyFramef1=newMyFrame();}}窗口事件(适配器说明)关闭窗口框时引发WindowEvent事件委托:addWindowListener(newWclose());定义监听者类classWcloseimplementsWindowListene
本文标题:7-图形用户界面设计与实现
链接地址:https://www.777doc.com/doc-3421726 .html