




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第章第章AWT组件及事件处置组件及事件处置 l7.1Java窗口窗口l7.2文本框文本框l7.3内部类实例做监视器内部类实例做监视器l7.4按钮与标签按钮与标签l7.5菜单项菜单项l7.6文本区文本区l7.7面板面板l7.8规划规划l7.9画布画布l7.10 选择型组件选择型组件l7.11 Component类的常用方法类的常用方法l7.12 窗口事件窗口事件l7.13 鼠标事件鼠标事件l7.14 焦点事件焦点事件l7.15 键盘事件键盘事件l7.16 运用剪贴板运用剪贴板l7.17 打印打印l7.18 综合实例综合实例 图形用户界面图形用户界面l经过图形用户界面GUI:Graphics Us
2、er Interface,用户和程序之间可以方便地进展交互。Java的笼统窗口工具包AWT:Abstract Window Toolkit中包含了许多类来支持GUI设计。AWT由Java的java.awt包提供,该包中有许多用来设计GUI的组件类,如:按钮、菜单、列表、文本框等组件类,同时它还包含窗口、面板等容器类。容器类容器类(Container)和组件类和组件类(Component) lJava.awt包中一部分类的层次关系如下图l 7.1 Java窗口窗口lFrame类是Container类的间接子类。当需求一个窗口时,可运用Frame或其子类创建一个对象。窗口也是一个容器,可以向窗口添
3、加组件。需求留意的是,窗口默许地被系统添加到显示器屏幕上,因此,不允许将一个窗口添加到另一个容器中。 1. Frame常用方法常用方法l1Frame() 该构造方法可以创建一个无标题的窗口,窗口的默许规划为BorderLayout规划。l2Frame(String s) 该构造方法可以创建一个标题为s的窗口,窗口的默许规划为BorderLayout规划。l3public void setBounds(int a,int b,int width,int height) 窗口调用该方法可以设置出如今屏幕上时的初始位置是(a,b),即距屏幕左面a个像素、距屏幕上方b个像素;窗口的宽是width,高是
4、height。l4public void setSize(int width,int height) 设置窗口的大小,窗口在屏幕出现是默许位置是(0,0)。l5public void setVisible(boolean b) 设置窗口是可见还是不可见,窗口默许是不可见的。l6public void setResizable(boolean b) 设置窗口能否可调整大小,窗口默许是可调整大小的。2.菜单条、菜单、菜单项菜单条、菜单、菜单项 ljava.awt包中的Menubar类是担任创建菜单条的,即Menubar的一个实例就是一个菜单条。Frame类有一个将菜单条放置到窗口中的方法:setM
5、enuBar(MenuBar bar);ljava.awt包中的Menu类是担任创建菜单的,即Menu的一个实例就是一个菜单 ljava.awt包的MunuItem类担任创建菜单项,即MenuItem的一个实例就是一个菜单项 7.3 文本框文本框ljava.awt包中的类TextField类创建文本框l用户可以在文本框输入单行的文本 l .TextField类的主要方法类的主要方法 lTextField(int x) 假设运用这个构造方法创建文本框对象,文本框中的可见字符序列的长度为 x个机器字符长。文本框是可编辑的,用户可以在文本框中输入假设干个字符。lTextField(String s
6、) 假设运用这个构造方法创建文本框对象,那么文本框的初始字符串为s。文本框是可编辑的,可以在文本框中输入假设干个字符。lpublic void setText(String s) 文本框对象调用该方法可以设置文本框中的文本为参数s指定的文本,文本框中先前的文本将被去除。lpublic String getText() 文本框对象调用该方法可以获取文本框中的文本。lpublic void addActionListener(ActionListener l) 文本框对象调用该方法可以向文本框添加动作监视器将监视器注册到文本框。2.文本框上的文本框上的ActionEvent事件事件 l学习组件除了
7、了解组件的属性和功能外,一个更重要的方面是学习怎样处置组件上发生的界面事件。 l在学习处置事件时,必需很好地掌握事件源、监视器、处置事件的接口这三个概念。 l经过处置文本框这个详细的组件上的事件,来掌握处置事件的根本原理。 Java的事件处置方式的事件处置方式l事件源可以产惹事件的对象都可以成为事件源,如文本框、按钮、下拉式列表等。也就是说,事件源必需是一个对象,而且这个对象必需是Java以为可以发惹事件的对象。l监视器需求一个对象对事件源进展监视,以便对发生的事件作出处置。事件源经过调用相应的方法将某个对象作为本人的监视器。例如,对于文本框,这个方法是:laddActionListener(
8、监视器);l创建该监视器对象的类必需声明实现相应的接口 l处置事件的接口在文本框获得输入焦点之后,假设用户按回键,Java运转系统就自动用ActionEvent类创建了一个对象,即发生了ActionEvent事件 当事件源发惹事件时,监视器就自动调用执行被类实现的某个接口方法 处置事件表示图处置事件表示图 7.4按钮与标签按钮与标签l标签的功能是只显示文本,不能动态地编辑文本。Lalel类的实例就是一个标签.lJava.awt包中的Button类是专门用来建立按钮的。即Button类创建的一个对象就是一个按钮。l按钮可以发生ActionEvent事件,当按钮获得监视器之后,用鼠标单击按钮,就发
9、生ActionEven事件. 7.5菜单项菜单项l单击某个菜单项可以发生ActionEvent事件,因此,我们可以经过处置ActionEvent事件实现我们想要进展的操作。 l可以运用MenuShotcut类为菜单项设置快捷键,该类的一个构造方法是:l MenuShotcut (int key);l 其中key可以取值:KeyEvent.VK_A KeyEvent.VK_Z; l菜单项运用setShortcut(MenuShortcut k)方法来设置快捷键。 7.6文本区文本区ljava.awt包中的类TextArea类是专门用来建立文本区的,即TextArea创建的一个对象称做一个文本区。
10、用户可以在文本区输入多行的文本。 1. TextArea类主要方法类主要方法 lTextArea(int x,int y) 运用这个构造方法创建文本区对象,文本框可见行数和列数数分别为x和y。文本区有程度和垂直滚动条。lpublic void setText(String s) 文本区对象调用该方法可以将文本区中的文本设置为参数s指定的文本,文本区中先前的文本将被去除。lpublic String getText() 文本区对象调用该方法可以获取文本区中的文本。lpublic void append(String s) 文本区对象调用该方法可以在文本区中尾加文本 .laddTextListen
11、er(TextListener) 文本区对象调用该方法可以向文本框添加文本监视器。.文本区上的文本区上的TextEvent事件事件 l对于文本区事件源,可以发生TextEvent事件。当文本区获得监视器之后,在文本区域中改动文本的内容,如键入字符、删除字符时,TextEvent类将自动创建一个事件对象。l发生TextEvent事件的事件源获得监视器的方法是addTextListener(监视器);,l 由于文本区可以发生TextEvent事件,所以TextArea类提供了addTextListener方法。l处置发生TextEvent 事件的接口是TextListener,该接口中只需一个的方
12、法:l textValueChanged (TextEvent e)l创建文本区监视器的类必需求实现TextListener接口。当文本区发生TextEvent事件时,监视器将自动调用方法:l textValueChanged (TextEvent e)l 对发生的事件作出处置。 7.7面板面板ljava.awt包的Panel类是Container容器的子类,因此Panel类及其子类的实例也是一个容器,Panel型容器的默许规划是FlowLayout型规划。Panel类创建的对象称做面板,我们经常在一个面板里添加假设干个组件后,再把面板放到另一个容器里。ljava.awt包中的ScrollPa
13、ne类也是Container类的子类,因此该类创建的对象也是一个容器,称为滚动面板。我们可以把一个组件放到一个滚动面板中,然后经过滚动条来察看这个组件。与Panel创建的容器所不同的是,ScrollPane带有滚动条,而且只能向滚动面板添加一个组件。 7.8规划规划l当把组件添加到容器中时,希望控制组件在容器中的位置,这就需求学习规划设计的知识。我们将分别引见java.awt包中的FlowLayout、BorderLayout、CardLayout、GridLayout规划类和java.swing.border包中的BoxLayout规划类。l容器可以运用方法:l setLayout(规划对象
14、);l 来设置本人的规划。1. FlowLayout规划规划 lFlowLayout类创建的对象称做FlowLayout型规划。FlowLayout型规划是Panel型容器的默许规划,即Panel及其子类创建的容器对象,假设不专门为其指定规划,那么它们的规划就是FlowLayout型规划。l假设一个容器运用这个FlowLayout型规划,组件按照参与的先后顺序从左向右陈列,一行排满之后就转到下一行继续从左至右陈列 . 2. BorderLayout规划规划 lBorderLayout 规划是Window型容器的默许规划,例如Frame、Dialog都是Window类的子类,它们的默许规划都是B
15、orderLayout 规划。 l假设一个容器运用这种规划,那么容器空间简单地划分为东、西、南、北、中五个区域,中间的区域最大。3. CardLayout 规划规划 l运用CardLayout 的容器可以包容多个组件,但是实践上同一时辰容器只能从这些组件中选出一个来显示,就像一叠“扑克牌每次只能显示最上面一张一样,这个被显示的组件将占据一切的容器空间,依次排序。 4. GridLayout规划规划 lGridLayout的规划战略是把容器划分成假设干行乘假设干列的网格区域,组件就位于这些划分出来的小格中。GridLayout比较灵敏,划分多少网格由程序自在控制,而且组件定位也比较准确l由于Gr
16、idLayout规划中每个网格都是一样大小并且强迫组件与网格的大小一样,使得容器中的每个组件也都是一样的大小,显得很不自然。为了抑制这个缺陷,他可以运用容器嵌套。 . BoxLayout规划规划 l盒式规划的容器将组件陈列在一行或一列,这取决于创建盒式规划对象时,能否指定了是行陈列还是列陈列。 l运用行列型盒式规划的容器将组件陈列在一行列,组件按参与的先后顺序从左上向右下陈列,容器的两端是剩余的空间。和FlowLayou规划不同的是,运用行型盒式规划的容器只需一行列,即使组件再多,也不会延伸到下一行列,这些组件能够会被减少大小,紧缩在这一行列中。7.9画布画布 ljava.awt包中的类Can
17、vas担任创建画布对象。创建画布对象的常用方法是用Canvas的子类来创建画布对象,并在子类中重写父类的public void paint(Graphics g)方法。该方法是Component类的一个方法,可以在其子类中重写这个方法,当重写这个方法时,参数g是自动实例化的,这样我们就可以在子类中运用 g调用相应方法,比如画串、画图形、图像等 .7.5选择型组件选择型组件l选择框选择框 选择框提供两种形状,一种是选中,另一种选择框提供两种形状,一种是选中,另一种是未选中。是未选中。java.awt包中的包中的Checkbox用来建立选择用来建立选择框,即框,即Checkbox创建的一个对象就是
18、一个选择框。创建的一个对象就是一个选择框。l选择框可以发生选择框可以发生ItemEvent事件事件,发生发生ItemEvent事件事件的事件源获得监视器的方法是:的事件源获得监视器的方法是:addItemListener(监监视器视器) .l创建监视器的类必需实现创建监视器的类必需实现ItemListener接口,该接口接口,该接口中只需一个的方法。当在选择框发生中只需一个的方法。当在选择框发生ItemEvent事件事件时,监视器将自动调用接口方法:时,监视器将自动调用接口方法:l temStateChanged(ItemEvent e)l 对发生的事件作出处置。对发生的事件作出处置。 l下拉
19、列表下拉列表 Choice创建的一个对象称作一个下创建的一个对象称作一个下拉列表组件,它是用户非常熟习的一个组件。拉列表组件,它是用户非常熟习的一个组件。用户可以在下拉列表看到第一个选项和它旁边用户可以在下拉列表看到第一个选项和它旁边的箭头按钮,当用户单击箭头按钮时,选项列的箭头按钮,当用户单击箭头按钮时,选项列表翻开。表翻开。 l下拉式列表可以发生下拉式列表可以发生ItemEvent事件。当下拉事件。当下拉式列表获得监视器之后,用户在下拉列表选项式列表获得监视器之后,用户在下拉列表选项列表中选中某个选项时就发生列表中选中某个选项时就发生ItemEvent事件事件.l l滚动列表滚动列表 ja
20、va.awt包中的类包中的类List类建立滚动类建立滚动列表列表 .l滚动列表和下拉列表的另一不同之处是,滚滚动列表和下拉列表的另一不同之处是,滚动列表除了可以发生动列表除了可以发生ItemEvent事件外,还事件外,还可以发生可以发生ActionEvent事件。当用鼠标单击事件。当用鼠标单击滚动列表的某个选项后,发生滚动列表的某个选项后,发生ItemEvent事事件;当用鼠标双击某个选项后,发生件;当用鼠标双击某个选项后,发生ActionEvent事件。事件。 7.11 Component类的常用方法类的常用方法lComponent类是一切组件的父类,这一节引见Component类的常用方法
21、 1.组件的颜色组件的颜色 lpublic void setBackground(Color c) 设置组件的背风光。lpublic void setForeground(Color c) 设置组件的前风光。lpublic Color getBackground() 获取组件的背风光。lpublic Color getForeground() 获取组件的前风光。 2组件的字体组件的字体lpublic void setFont(Font f) 组件调用该方法设置组件上的字体。例如,文本组件调用该方法可以设置文本组件中的字体。lpublic Font getFont() 组件调用该方法获取组件上的
22、字体。3组件的大小与位置组件的大小与位置lpublic void setSize(int width,int height) 组件调用该方法设置组件的大小,参数width指定组件的宽度,height指定组件的高度。lpublic void setLocation(int x,int y) 组件调用该方法设置组件在容器中的位置,包含该组件的容器都有默许的坐标系,容器的坐标系的左上角的坐标是(0,0),参数x,y指定该组件的左上角在容器的坐标系中的坐标,即组件距容器的左边境 x个像素,距容器的上边境 y 个像素。lpublic Dimension getSize() 组件调用该方法前往一个Dime
23、nsion对象的援用,该对像实体中含有名字是width 和height的成员变量,方法前往的Dimension 对象的width的值就是组件的宽度、height的值就是当前组件的高度。lpublic Point getLocation() 组件调用该方法前往一个Point对象的援用,该对像实体中含有名字是x 和y的成员变量,方法前往的Point对象的x,y的值就是组件的左上角在容器的坐标系中的x坐标和y坐标。lpublic void setBounds(int x,int y,int width,int height) 组件调用该方法设置组件在容器中的位置和组件的大小。该方法相当于setSiz
24、e方法和setLocation方法的组合。lpublic Rectangle getBounds() 组件调用该方法前往一个Rectangle对象的援用,该对象实体中含有名字是x、y、width 和height的成员变量,方法前往的Rectangle对象的x,y的值就是组件的左上角在容器的坐标系中的x坐标和y坐标,width和height的值就是当前组件的宽度和高度。4组件的激活与可见性组件的激活与可见性lpublic void setEnabled(boolean b) 组件调用该方法可以设置组件能否可被激活,当参数b取值true时,组件可以被激活,当参数b取值false 时,组件不可激活。
25、默许情况下,组件是可以被激活的。lpublic void setVisible(boolean) 设置组件在该容器中的可见性,当参数b取值true时,组件在容器中可见,当参数b取值false 时,组件在容器中不可见。除了Window型组件外,其它类型组件默许是可见的。5组件上的光标组件上的光标lpublic void setCursor(Cursor c) 设置鼠标指向组件时的光标外形。 l可以运用 Cursor类的类方法直接获得一个光标对象,例如:lCursor c=Cursor.getPredefinedCursor(Cursor.HAND_CURSOR);6paint方法与方法与repa
26、int方法方法l调用repaint()方法时,repaint()方法会再去调用update(Graphics g)方法。update(Graphics g)方法也是Component类中的一个方法,这个方法的功能是:去除paint()方法以前所画的内容,然后再调用paint方法。因此我们可以在子类中重写update方法即隐藏父类的方法,根据需求来去除哪些部分或保管哪些部分。7.12窗口事件窗口事件lFrame是Window的子类,凡是 Window子类创建的对象都可以发生WindowEvent类型事件,即窗口事件。l当一个Frame窗口被激活、吊销激活、翻开、封锁、图标化或吊销图标化时,就引发
27、了窗口事件,即WindowEvent创建一个窗口事件对象。WindowEvent创建的事件对象调用getWindow方法可以获取发生窗口事件的窗口。窗口运用addWindowlistener方法获得监视器,创建监视器对象的类必需实现WindowListener接口,该接口中有7个不同的方法 . WindowListener接口中的方法接口中的方法lpublic void windowActivated(WindowEvent e) 当窗口从非激活形状到激活时,窗口的监视器调用该方法。lpublic void windowDeactivated(WindowEvent e) 当窗口激活形状到非激
28、活形状时,窗口的监视器调用该方法。lpublic void windowClosing(WindowEvent e) 当窗口正在被封锁时,窗口的监视器调用该方法。lpublic void windowClosed(WindowEvent e) 当窗口封锁后,窗口的监视器调用该方法。lpublic void windowIconified(WindowEvent e) 当窗口图标化时,窗口的监视器调用该方法。lpublic void windowDeiconified(WindowEvent e) 当窗口吊销图标化时,窗口的监视器调用该方法。lpublic void windowOpened(W
29、indowEvent e) 当窗口翻开时,窗口的监视器调用该方法。2. WindowAdapter适配器适配器 l适配器可以替代接口来处置事件,当Java提供处置事件的接口中多于一个方法时,Java相应地就提供一个适配器类,比如WindowAdapter类。适配器曾经实现了相应的接口,例如WindowAdapter类实现了WindowListener接口。因此,可以运用WindowAdapte的子类创建的对象做监视器,在子类中重写所需求的接口方法即可 7.13鼠标事件鼠标事件 l任何组件上都可以发生鼠标事件,如:鼠标进入组件、退出组件、在组件上方单击鼠标、拖动鼠标等都触发组件发生鼠标事件,也就
30、是说,组件可以成为发生鼠标事件的事件源。1.MouseListener接口接口 l运用MouseListener接口可以处置5种操作触发的鼠标事件:l1在事件源上按下鼠标键。l2在事件源上释放鼠标键。l3在事件源上击鼠标键。l4鼠标进入事件源。l5鼠标退出事件源。l鼠标事件的类型是MouseEvent,即当发生鼠标事件时,MouseEvent类自动创建一个事件对象。 MouseListener接口中的方法接口中的方法 l1mousePressed(MouseEvent) 担任处置在组件上按下鼠标触发的鼠标事件,当在组件上按下鼠标时,监视器将自动调用接口中的这个方法对事件作出处置。l2mouseReleased(MouseEvent) 担任处置在组件上释放鼠标触发的鼠标事件,当在组件上释放鼠标时,监视器将自动调用接口中的这个方法对事件作出处置。l3mouseEntered(MouseEvent) 担任处置鼠进入组件触发的鼠标事件,当鼠标进入组件上方时,监视器将自动调用接口中的这个方法对事件作出处置。l4mouseExited(MouseEvent) 担任处置鼠标分开组件触发的鼠标事件,当鼠标分开组件时,监视器自动调用接口中的这个方法对事件作出处置。l5mouseClicked(MouseEvent) 担任处置在组
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 文化机械产品的人因工程学研究考核试卷
- 渔业机械设计中的用户体验优化考核试卷
- 火力发电厂发电机安装与调试考核试卷
- 灌溉项目对区域水资源平衡的调节作用考核试卷
- 会计补充合同标准文本
- 机械零部件制造基础考核试卷
- 农业产品商事合同标准文本
- 买卖车库正规合同范例
- 住宅空调采购合同范例
- 企业员工简易合同范例
- 儿童保健科疾病诊疗常规诊疗规范
- 破产管理人考试题库及答案
- 商标注册委托协议书
- 2023年中考语文备考之名著阅读《钢铁是怎样炼成的》2022年中考真题集合
- 钳形电流表正确的使用方法
- 铝合金门窗质量管理体系及保证措施
- 认知破局:优化努力的34条思维原则
- SpaceClaim.中文教程完整版
- 空间数据质量评价与控制
- 中建项目经济活动分析作业指导书
- 新人教版小学数学六年级下册平面图形的认识与测量教学设计
评论
0/150
提交评论