版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第7章图形界面学习目标了解AWT与Swing的关系掌握组件、容器、布局管理器的概念了解Jframe等常见容器了解Jbutton、Jlabel等组件了解事件处理作用和实现机制一个系统中,良好的人机界面是非常重要的,Java中也可以完成像Windows一样的操作界面。图形用户界面(GraphicalUserInterfaceGUI)编程主要有以下几个特征:图形界面对象及其框架图形界面对象的布局图形界面对象上的事件响应Java的图形界面开发中有两种技术:AWT和Swing。AWTAbstractWindowingToolkit抽象窗口工具包是Java提供的用来建立和设置Java的图形用户界面的基本工具。AWT中的所有工具类都保存在java.awt包中。AWT包中提供的所有工具类分为以下3种组件:Component容器:Container布局管理器:LayoutManager在java.awt包中所提供的组件类很多,主要有以下几大类Java程序中,所有类的根类是java.lang.ObjectJava.lang由编译器自动导入,无需使用import导入,而其他包则需要在程序之前说明组件图形界面中,用户经常会看到一个个的按钮、标签、菜单等,这些实际上就是一个个的组件。在整个AWT包中,所有的组件类都是从Component和MenuComponent扩展而来的,这些类会继承这两个类的公共操作。容器所有的AWT组件都应该放到容器中,并可以设置其位置、大小等,所有的容器都是Component的子类。布局管理器使用布局管理器可以使用容器的组件按照指定的位置进行摆放,即使容器改变了大小,布局管理器也可以准确地把组件放到指定的位置,这样可以有效地保证版面不会混乱。在AWT中所有的布局管理器都是LayoutManager的子类。SwingAWT大量引入了Windows函数,所以被称为重量级组件。在Java2中提供了轻量级的图形界面组件——Swing,它使用Java语言实现,是以AWT平台为基础构建起来的新组件,直接使用Swing可以更轻松地构建用户界面。Java中所有Swing都保存在javax.swing包中。Javax是一个扩展包,所有的组件是从Jcomponent扩展出来的。Jcomponent类几乎是所有Swing组件的公共父类,所以Jcomponent的所有子类也都继承了父类的全部公共操作。所有的Swing组件只是比AWT组件多增加了”J”基本容器JFrame如果要创建一个窗口,直接使用Jframe类即可,此类是Component的子类。例:JFrameDemo01.java此窗体的标题是在实例化Jframe时设置的标题,底色为白色,通过setSize方法设置了显示的大小。setVisible(true)非常重要,没有这句话,窗体为隐藏的,不能显示。使用java.awt.Color类实现背景色的设置。在Jframe中也可以使用Dimension类设置窗体大小,此类主要用于封装组件显示的宽度和高度。对于组件的显示位置也可使用Point类,此类封装的显示位置的X、Y坐标。例:JFrameDemo02.java该程序的运行结果与之前的完全一样。标签:JLabelJlabel组件用于显示信息,一般情况下是不能直接更改其内容的。创建完的Label对象可以通过Container类中的add方法加入到容器中。例:JLabelDemo01.java该程序实例化了一个Jlabel对象,并制定内容以及对齐方式,之后将此组件加入到容器中并显示。使用setFont方法可以更改标签的字体和颜色,java.awt.Font类用来表示字体。例:JLabelDemo02.java按钮:JButtonJbutton组件表示一个普通的按钮。例:JButtonDemo01.javaJbutton与Jlabel使用起来没有任何区别。Jbutton也可以为一个按钮设置一张图片例:JButtonDemo02.java布局管理器Java中专门提供了布局管理器来管理组件。通过布局管理器可以使用不同方式排列组件。每当需要重新调整屏幕大小或重新绘制屏幕上任一项时,都要用到布局管理器。Swing中使用的布局管理器主要有以下几类:FlowLayoutBorderLayoutGridLayoutCardLayout绝对定位FlowLayout:流式布局管理,使用此布局方式会使所有的组件像流水一样依次进行排列。例:FlowLayoutDemo01.java所有组件按照顺序依次向下排列。BorderLayout:将窗体的版面划分成东南西北中5个区域,将需要的组件直接放到这5个区域。例:BorderLayoutDemo01.javaGridLayout:以表格的形式进行管理,在使用此布局管理器时必须设置显示的行数和列数。例:GridLayoutDemo01.javaCardLayout:将一组组件彼此重叠的进行布局,就像一张张卡片一样,这样每次只会展现一个界面。例:CardLayoutDemo01.java绝对定位:如果不想再窗体中指定布局管理器,可以使用绝对位置坐标方式。在Component中提供了setBounds方法,定位一个组件的坐标,使用X、Y坐标表示位置。例:AbsoluteLayoutDemo01.java单行文本输入:JTextField如果要实现一个单行的输入文本,可以使用JTextField组件。例:JTextDemo01.java该程序使用了GridLayout的布局方式。第一个文本框是可编辑的,第二个为不可编辑。setColumns方法设置显示的行数并没有任何改变,因为GridLayout在使用时会忽略这些设置值,让每一个格子都具有相同的大小,如果要解决这个问题,可以使用绝对定位的方法进行。例:JTextDemo02.java事件处理图形界面制作完成只是完成了程序开发的起步工作,要想让每一个组件都发挥自己的作用,就必须对所有的组件进行事件处理。事件和监听器事件:表示一个对象的发生状态变化。如果要想处理事件,就需要事件的监听者不断监听事件的变化,并根据事件进行相应的处理。在Swing编程中,使用了最早AWT的事件处理方式,所有的事件类都是EventObject类的子类。通过getSource方法取得发生事件的源对象。如果没有能够接收和处理事件的对象,图形界面程序所生成的一切事件都是无用的,这些事件接收对象被称为事件监听器。所有的事件监听器都是以监听接口的形式出现的,处理时只需要实现此接口即可。事件处理流程如下窗体事件WindowListener是专门处理窗体的事件监听接口,一个窗体的所有变化,如窗口的打开、关闭等都可以使用这个接口进行监听。例:MyEventWindowEventJFrame01.java需要覆写WindowListener接口的所有方法。只有一个监听器是不够的,还需要在组件使用时注册监听,这样才可以处理,直接使用窗体的addWindowListener方法即可注册事件监听。监听适配器为了不覆写不必要的方法,在事件处理中提供了很多的Adapter(适配器)类,方便用户进行事件处理的实现。以WindowAdapter为例,用户只要继承了此类,就可以根据自己的需要覆写方法。在开发中是较为常见的做法。例:MyEventWindowEventJFrame02.java如果此监听处理只需操作一次,就没有必要将其设置为一个单独的类,可以使用匿名内部类直接完成监听操作。例:MyEventWindowEventJFrame03.java动作事件及监听处理要想让一个按钮变得有意义,就必须使用事件处理。在Swing的事件处理中,可以使用ActionListener接口处理按钮的动作事件。ActionListener接口只定义了一个方法。voidactionPerformed(ActionEvente)发生操作时调用例:MyActionEventDemo01.java由于动作事件有可能有很多事件源,所以为了保险,在操作之间添加了验证语句if(e.getSource()==but)例:简单的用户登录程序MyActionEventDemo02.java当单击按钮时会触发ActionEvent事件,并判断发生此事件的是哪个按钮。注意程序的分层。该程序中有专门负责业务处理的LoginCheck类,也有完成界面显示的MyActionEventDemo02类,可以很好的达到显示和业务的分离。在Swing的事件处理中也可以对键盘的操作进行监听,直接使用KeyListener接口。主要方法voidkeyPressed(KeyEvente)按下某个键时调用此方法。voidkeyReleased(KeyEvente)释放某个键时调用此方法。voidkeyTyped(KeyEvente)键入某个键时调用此方法。键盘事件及监听处理如果取得键盘输入的内容,可以通过KeyEvent取得。chargetKeyChar()
返回与此事件中的键关联的字符。intgetKeyCode()
返回与此事件中的键关联的整数keyCode。staticString
getKeyText(intkeyCode)
返回描述keyCode的String,如"HOME"、"F1"或"A“。例:MyKeyEventDemo01.java在键盘监听中,也可以使用KeyAdapter适配器完成键盘事件的监听。例:MyKeyEventDemo02.java鼠标事件及监听处理对鼠标操作进行监听,如鼠标按下、松开等,可以使用MouseListener接口。voidmouseClicked(MouseEvente)
鼠标按键在组件上单击(按下并释放)时调用。
voidmouseEntered(MouseEvente)
鼠标进入到组件上时调用。
voidmouseExited(MouseEvente)
鼠标离开组件时调用。
voidmousePressed(MouseEvente)
鼠标按键在组件上按下时调用。
voidmouseReleased(Mou
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年标准化合作社运营合同模板版B版
- 2025年山东淄博沂源县教体系统事业单位紧缺教师招聘30人历年管理单位笔试遴选500模拟题附带答案详解
- 2025年山东济宁高新区管委会第二批“优才”拟聘用人员管理单位笔试遴选500模拟题附带答案详解
- 2025年山东济宁微山县事业单位招聘工作人员(综合类)93人历年管理单位笔试遴选500模拟题附带答案详解
- 2025年山东济宁学院招聘3人(博士研究生)历年管理单位笔试遴选500模拟题附带答案详解
- 2025年山东泰安宁阳县事业单位招聘管理单位笔试遴选500模拟题附带答案详解
- 家长会上的学生家长发言稿
- 2025年山东日照五莲县事业单位公开招聘工作人员90人历年管理单位笔试遴选500模拟题附带答案详解
- 2025年山东德州乐陵市技工学校招聘12人历年管理单位笔试遴选500模拟题附带答案详解
- 物质变化微课程设计
- 真空管太阳能热水工程解决方案
- 棋牌室合伙人协议
- 教师个人履职工作总结一级教师
- 国开电大本科《管理英语3》机考总题库
- 沥青路面结构监理细则
- YY/T 0506.7-2014病人、医护人员和器械用手术单、手术衣和洁净服第7部分:洁净度-微生物试验方法
- GB/T 5974.1-2006钢丝绳用普通套环
- GB/T 3955-2009电工圆铝线
- 药品专业知识培训答案
- 阿里JAVA编码规范手册
- PMC知识培训课件
评论
0/150
提交评论