




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java通过图形用户界面(GraphicalUserInterface),用户和程序之间可以方便友好地进行交互。抽象窗口工具包(AbstractWindowTools):Java开发用户界面最初的工具包2DAPI:实现高质量的二维图Swing组件:建立在AWT之上的功能更强大的图形组件包第十六讲图形用户界面-AWT2023/7/261
java.awt包中包含了一个完整的类集以支持GUI程序的设计,其中的类及相互关系可以用下图来描述:事件类字体类GraphicsComponent颜色类布局管理类java.lang.ObjectCheckboxContainerButton…WindowPanelAppletDialogFrameList图象类菜单类1java.awt包2023/7/262河北农业大学信息科学与技术学院朱亚涛03-1java.awt包中最核心的类就是Component类,它是构成Java图形用户界面的基础,大部分组件都是由该类派生出来的。Component类是一个抽象类,其中定义了组件所具有的一般功能:基本的绘画支持(paint,repaint,update等)、字体和颜色等外形控制(setFont,SetForeground等)、大小和位置控制(SetSize,SetLocation等)、图象处理(实现接口ImageObserver)以及组件状态控制(SetEnable,isEnable,isVisible,isValid等)
,……。2Component类2023/7/263河北农业大学信息科学与技术学院朱亚涛03-1AWT中的各种组件2023/7/264河北农业大学信息科学与技术学院朱亚涛03-1
常见的图形用户界面元素组件(Component类的子类)包括:Button(按钮)
Checkbox(复选框)CheckboxGroup(成组复选框-单选按钮)Choice(下拉式菜单)Label(标签)List(列表)Canvas(画布)TextComponent(文本输入)
Scrollbar(滚动条)3界面元素组件2023/7/265河北农业大学信息科学与技术学院朱亚涛03-1按钮(Button):可点击的用户界面组件,当组件被点击时,产生AcitonEvent事件,可以用ActionListener来监听。复选框(Checkbox):提供简单的on/off开关,同时旁边还可以显示说明信息。当复选框状态发生变化时,会产生ItemEvent事件,可以用ItemListener来监听。复选框组(CheckboxGroup)——单选框(RadioButton)当多个复选框组成一组时,就形成了单选框。复选框组中的复选框之间是相互关联的,每次有且只有一个处于选中状态。下拉式菜单(Choice):在下拉式菜单中有多个选项,但每次只能选择一项。当选择发生时,会产生ItemEvent事件,可以用ItemListener来监听。基本组件12023/7/266河北农业大学信息科学与技术学院朱亚涛03-1标签(Label):静态文字,多用于指示信息,无事件。单行文本区(TextField)——TextComponent只能显示一行信息,当按回车键后,会产生ActionEvent事件,可以用ActionListener来监听。文本输入区(TextArea)——TextComponent可以输入或显示多行信息,并且有滚动条支持。按回车键后并不产生事件,相当于输入一个换行符。列表(List):列表提供了很多文本选项,可以同时看到多项,也有滚动条的支持,并且可以单选或多选。当用户单选或多选时,会产生ItemEvent事件。基本组件22023/7/267河北农业大学信息科学与技术学院朱亚涛03-1菜单与其他组件不同,不是由一般的Component类派生,而是从MenuComponent类继承得到,它由以下概念支撑:菜单条(MenuBar)只能添加到Frame中(用setMenuBar()),作为摆放菜单的容器。菜单(Menu)菜单项容器,负责显示并控制其中的菜单项。它支持菜单嵌套。菜单项(MenuItem)真正的动作,可以用ActionListener监听其事件(ActionEvent)。复选框菜单项(CheckboxMenuItem)真正的动作,可以用ItemListener监听其事件(ItemEvent)。弹出式菜单(PopupMenu)与菜单相似,也是菜单项容器。基本组件3:菜单2023/7/268河北农业大学信息科学与技术学院朱亚涛03-1
Container类是由Component类派生出来的一种特殊类,用来表示各种GUI组件的容器,其主要功能包括:组件的管理:方法add()可以向其中添加一个组件,remove()删除其中的一个组件,…
布局管理:每个容器都和一个布局管理器相联,以确定其中组件的布局。容器可以通过setLayout()方法设置某种布局方式。
常见的Container类有Frame,Panel,Applet等。4Container类2023/7/269河北农业大学信息科学与技术学院朱亚涛03-1Window类(Container类的子类)是显示屏上独立的本机窗口,它独立于其它容器。Window主要有两种形式:Frame(框架)和Dialog(对话框)。Frame和Dialog是Window的子类。Frame是一个带有标题和缩放角的窗口,可以有菜单条。Frame是一个顶级窗口,通常是应用程序的骨架。可以在Frame中添加其它容器组件和界面元素组件。Dialog没有菜单条,尽管它能移动,但它不能缩放。对话框与Frame相类似,一般用于接收用户的输入数据,实现与用户的交互。对话框与一般窗口的区别在于它依赖其它的窗口。对话框分有模式和无模式两种,前者只让应用程序响应对话框内部事件,后者则可以响应对话框以外的事件。容器:窗口2023/7/2610河北农业大学信息科学与技术学院朱亚涛03-1Panel类(Container类的子类)对象被包含在另一个容器中,或是在Web浏览器的窗口中。Panel(面板)确定一个四边形,其它基本组件或面板组件可以放入其中。最上层Panel必须放在Window之中(或Window的子类中)以便能显示出来。Applet是Panel的子类,可以成为网页的一部分下面的程序创建了一个小的黄色面板,并将它加到一个框架对象上:容器:Panel和Applet2023/7/2611河北农业大学信息科学与技术学院朱亚涛03-1importjava.awt.*;publicclassPanelTestTemp{ publicstaticvoidmain(Stringargs[]){ FramemainFrame=newFrame(); mainFrame.setSize(200,200); mainFrame.setTitle("FramewithPanel"); Panelpan=newPanel(); mainFrame.setBackground(Color.blue); mainFrame.setLayout(null);
pan.setSize(100,100); pan.setBackground(Color.yellow); mainFrame.add(pan); mainFrame.setVisible(true); }}示例2023/7/2612河北农业大学信息科学与技术学院朱亚涛03-1滚动窗口(ScrollPane)也是容器的一种,象Panel一样,无法单独使用。使用滚动窗口可以查看大面积的区域,因为它有滚动条。滚动窗口内只能放一个组件,通常是在滚动窗口中放一个面板,然后在面板中添加各种组件。容器:滚动窗口2023/7/2613河北农业大学信息科学与技术学院朱亚涛03-15Font类为了在程序执行时以不同的字体显示文本,Java语言提供了类Font。使用字体对象,需要为其构造方法提供字体名称、风格、点阵大小。字体风格:Font.PLAIN、Font.ITALIC、Font.BOLD2023/7/2614河北农业大学信息科学与技术学院朱亚涛03-16Color类为了在程序执行时以不同的颜色显示文本或组件背景,Java语言提供了类Color。大多数组件均有setBackground(Colorc)方法和
setForeground(Colorc)方法使用颜色对象,需要为其构造方法提供三个介于0到255间的整数,分别表示混合红绿蓝三种颜色分量所占的比例(RGB颜色模式),255相当于100%类Color还将一组标准颜色定义为常量2023/7/2615河北农业大学信息科学与技术学院朱亚涛03-1颜色常量示例Color.black或newColor(0,0,0)Color.blue或newColor(0,0,255)Color.gray或newColor(128,128,128)Color.green或newColor(0,255,0)Color.orange或newColor(255,200,0)Color.pink或newColor(255,175,175)Color.red或newColor(255,0,0)Color.white或newColor(255,255,255)Color.yellow或newColor(255,255,0)2023/7/2616河北农业大学信息科学与技术学院朱亚涛03-17Graphics类为了在屏幕上绘制直线、矩形、圆弧或椭圆等几何图形,Java语言提供了类Graphics。
drawImage方法:绘制图像drawLine方法:绘制直线drawOval方法:绘制椭圆drawArc方法:绘制弧drawRect方法:绘制矩形fillOval方法:绘制填充椭圆fillRoundRect方法:绘制填充圆角矩形……getFont/setFont方法:获取/设置字体getColor/setColor方法:获取/设置颜色2023/7/2617河北农业大学信息科学与技术学院朱亚涛03-18组件的布局为了使生成的图形用户界面具有良好的平台无关性,Java语言提供了布局管理器来管理组件在容器中的布局,而不直接设置组件的位置和大小。每个容器都要一个布局管理器,容器中组件的定位都由它来决定。当容器需要对某个组件进行定位时,就会调用其对应的布局管理器。2023/7/2618河北农业大学信息科学与技术学院朱亚涛03-1每个容器,如Panel、Windows或Frame都有各自缺省的布局管理器,程序员也可以在程序中调用相应容器的setLayout方法指定一个新的布局管理器。
Java语言中包含五种布局管理器:
FlowLayout:Panel和Applet的缺省布局管理器
BorderLayout:Window、Dialog和Frame的缺省布局管理器
GridLayoutCardLayoutGridBagLayout布局管理器简介2023/7/2619河北农业大学信息科学与技术学院朱亚涛03-1
FlowLayout布局方式是将组件一排一排地依次放置,它自动调用组件的getPreferredSize()方法,使用组件的最佳尺寸来显示组件。当容器被重新设置大小后,则布局也会随之发生改变:各组件的大小不变,但相对位置会发生变化。
FlowLayout类有三种构造方法:publicFlowLayout()
使用缺省居中对齐方式,组件间水平和竖直间距为5个象素。publicFlowLayout(intalignment)
使用指定的对齐方式(FlowLayout.LEFT,FlowLayout.RIGHT,FlowLayout.Center),水平和竖直间距为缺省值5象素。publicFlowLayout(intalignment,inthorizontalGap,intverticalGap)
使用指定的对齐方式,水平和竖直间距也为指定值。
FlowLayout布局2023/7/2620河北农业大学信息科学与技术学院朱亚涛03-19事件响应机制什么是事件?如果用户在用户界面层执行了一个动作(鼠标点击和按键),这将导致一个事件的发生。事件是描述发生了什么的对象。存在各种不同类型的事件类用来描述各类用户交互。2023/7/2621河北农业大学信息科学与技术学院朱亚涛03-1事件源事件源是一个事件的产生者。例如,在Button组件上点击鼠标会产生以这个Button为源的一个ActionEvent。这个ActionEvent实例是一个对象,它包含关于刚才所发生的那个事件的信息的对象。2023/7/2622河北农业大学信息科学与技术学院朱亚涛03-1事件处理器事件处理器就是一个接收事件、解释事件并处理用户交互的方法。
Java要求某个类实现相关接口(含有一个处理该事件的方法),将该类的某个对象向事件源注册监听某事件,一旦该事件发生,就会执行相应的方法。2023/7/2623河北农业大学信息科学与技术学院朱亚涛03-1规定响应某类事件应该实现哪些方法。注意:仅仅是方法的名称及参数。实现这些方法的具体代码由实现该接口的类完成。为了知道某个源组件对应的事件监听接口,需要查阅该组件的类似addXXXListener的方法
XXXListener就是该组件对应的事件监听接口名称
监听器接口2023/7/2624河北农业大学信息科学与技术学院朱亚涛03-1要响应button和List点击事件、TextField输完回车事件应该实现ActionListener
接口,对应方法actionPerformed;要响应Checkbox、List、Choice选中事件,应该实现
ItemListener接口,对应方法itemStateChanged
;要响应任何组件的键盘按键事件,应该实现KeyListener接口,对应方法keyPressed、keyReleased、keyTyped
;要响应任何组件的基本鼠标事件,应该实现MouseListener接口,对应方法mousePressed、mouseReleased、mouseClicked、mouseEntered、mouseExited
;要响应任何组件的鼠标移动和拖动事件,应该实现MouseMotionListener接口,对应方法mouseDragged、mouseMoved。2023/7/2625河北农业大学信息科学与技术学院朱亚涛03-1任何类,只要实现了某个监听接口,就可以成为监听器。类可以实现多个监听接口,以便监听处理多种事件。类必须在接口规定的方法中完成相应的事件响应代码。源组件自身必须事先通知监听器,请求它处理自己的事件响应(addXXXListener方法)。也可以在某些时候注销监听或再向其它监听器注册,完成复杂的控制。(removeXXXListener)实现监听器接口的类2023/7/2626河北农业大学信息科学与技术学院朱亚涛03-1事件处理模型:将事件源(产生事件的组件)和对事件作出的具体处理(利用一种称为监听器[listener]的实体来对事件进行具体的处理)分开。一般情况下,组件(事件源)都不处理自己的事件,而是将事件处理委托给外部的处理实体(监听器),这种事件处理模型称为事件的授权处理模型。不同的事件,可以交由不同类型的监听器去处理。所有的组件都从Component类中继承了将事件处理授权给监听器的方法:addXXXListener(ListenerTypelistener)removeXXXListener(ListenerTypelistener)委托事件模型2023/7/2627河北农业大学信息科学与技术学院朱亚涛03-1framePanelButton事件源2、用户点击监听器Actionperformed方法3、Call(invoke)1、循环检测事件0、登记、委托示意图2023/7/2628河北农业大学信息科学与技术学院朱亚涛03-1首先,对于某种类型的事件XXXEvent,要想接收并处理该类事件,必须定义相应的事件监听器类,这个类需要实现针对该类事件的特定接口XXXListener。其次,要实现该类中对事件处理的方法。第三,对于事件源,必须使用addXXXListener(XXXListener)注册该类事件的监听器,以便当事件产生时,能够被监听器接收和处理。TestExitActionEventactionPerformed(ActionEvente)Frame事件源监听器(ButtonListener)2023/7/2629河北农业大学信息科学与技术学院朱亚涛03-1classButtonListenerimplementsActionListener{publicvoidactionPerformed(ActionEvente){if(e.getActionCommand()=="Test"){System.out.println("ButtonTestpressed.");}else{System.exit(0);}}}publicclassComponentEvent2{publicstaticvoidmain(Stringargs[]){Framefr=newFrame("ComponentEventTest1.1");
ButtonListenerbl=newButtonListener();Buttonb1=newButton("Test");Buttonb2=newButton("Exit");b1.addActionListener(bl);b2.addActionListener(bl);fr.setLayout(newFlowLayout());fr.add(b1);fr.add(b2);fr.resize(200,200);fr.show();}}示例2023/7/2630河北农业大学信息科学与技术学院朱亚涛03-110Applet概述要演示基本组件的应用,必须将其置于Frame或Applet中
Applet相对简单,我们的演示代码均用到了它,需要概述
Java小应用程序(JavaApplet)是使用Java语言编写的一段代码,它能够在浏览器环境中运行。Applet与Application的主要区别在于它们执行方式不同:Application是使用命令行命令直接运行,从其main()方法开始运行的;而Applet则是在浏览器中运行的,首先必须创建一个HTML文件,通过编写HTML语言代码告诉浏览器载入何种Applet以及如何运行,再在浏览器中给出该HTML文件的URL地址即可,Applet本身的执行过程也较Application复杂。2023/7/2631河北农业大学信息科学与技术学院朱亚涛03-1小应用程序的书写格式
importjava.applet.*;publicclassMyAppletextendsApplet{…;}
每一个小应用程序都继承自java.applet.Applet类,不一定要有main方法。10.1小应用程序2023/7/2632河北农业大学信息科学与技术学院朱亚涛03-1装入次序2.1所有小应用程序的根源BrowserloadsURL(UniformResourceLocator
)<Html><Appletcode=….></Applet>2.BrowserloadsHTMLdocumentAppletclass3.BrowserloadsappletclassesLocation:Loading...4.Browserrunapplet2023/7/2633河北农业大学信息科学与技术学院朱亚涛03-1importjava.applet.*;importjava.awt.*;publicclassHelloAppletextendsApplet{publicStrings;publicvoidinit(){s=newString(“HelloWorld!”);}publicvoidpaint(Graphicsg){g.drawString(s,25,25);}}<HTML><HEAD><TITLE>HelloWorld</TITLE></HEAD><appletcode="HelloApplet.class"width=300height=300></applet></HTML>HelloApplet.java示例2023/7/2634河北农业大学信息科学与技术学院朱亚涛03-1观察HelloApplet.java、html文件……观察其被嵌入三峡大学网页的效果…..
观察JCreator自动创建的Applet程序……
2023/7
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年舟山开放大学招聘真题
- 2024年安阳汤阴县招聘公益性岗位人员真题
- 2025贵州遵义市赤水安洁物业服务有限公司招聘临聘值班人员录用模拟试卷附答案详解(考试直接用)
- 2025年宝鸡石油机械有限责任公司春季招聘(10人)模拟试卷及答案详解(全优)
- 2025北京门头沟龙泉镇招聘乡村医生3人考前自测高频考点模拟试题附答案详解(模拟题)
- 2025年湖南衡阳市水务投资集团有限公司招聘模拟试卷及答案详解(网校专用)
- 2025年烟台海阳市卫生健康局所属事业单位公开招聘工作人员(58人)模拟试卷及参考答案详解1套
- 2025贵州贵州省福泉市引进教育系统高层次人才20人模拟试卷及答案详解参考
- 2025广西桂林市资源县中峰镇中心卫生院公开招聘编外专业技术人员2人模拟试卷及答案详解(各地真题)
- 2025北京林业大学附属实验小学教师招聘1人模拟试卷及答案详解(全优)
- (完整)马克思主义政治经济学习题及参考答案
- 大规模模型蒸馏技术
- 贝朗DIALOG+透析机水路设计概览课件
- 光电功能材料课程-13-18课件
- 施工现场污水排放方案
- 黔西市中医医院金阳院区环评报告
- 我的家乡-枣阳
- 青春期生理卫生知识讲座男生篇
- 高中期中考试家长会PPT课件 (共51张PPT)
- 全球卫生治理课件
- 实验室生物安全程序文件
评论
0/150
提交评论