Java实用PPT课件第10章.ppt

上传人:京东小超市 文档编号:5908313 上传时间:2020-08-15 格式:PPT 页数:93 大小:1.54MB
返回 下载 相关 举报
Java实用PPT课件第10章.ppt_第1页
第1页 / 共93页
Java实用PPT课件第10章.ppt_第2页
第2页 / 共93页
亲,该文档总共93页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《Java实用PPT课件第10章.ppt》由会员分享,可在线阅读,更多相关《Java实用PPT课件第10章.ppt(93页珍藏版)》请在三一文库上搜索。

1、第10章 基于Swing的图形用户界面设计 本章导读 AWT组件与SWING组件 JFrame窗体、菜单组件、布局设计 中间容器、文本组件 按钮与标签组件、复选框与单选按钮组件 列表组件、表格组件、树组件和进度条组件 窗口事件、鼠标事件、焦点事件和键盘事件 对话框 AWT线程与计时器 MVC设计模式 发布应用程序 坞 冬 虾 耀 改 患 匡 秋 檀 拴 晋 墅 附 知 酵 萎 餐 拽 韵 教 妄 池 腿 缨 郡 驾 跪 响 党 韵 婚 襄 J a v a 实 用 P P T 课 件 第 1 0 章 J a v a 实 用 P P T 课 件 第 1 0 章 10.1 AWT组件与SWING组件

2、概述 Java早期进行用户界面设计时,使用java.awt包中提供的类。 “AWT”就是Abstrac Window Toolkit(抽象窗口工具包)的缩写。 Java 2(JDK1.2)推出之后,增加了一个新的javax.swing包,该包提供了 功能更为强大的用来设计GUI界面的类。 Java早期的java.awt包中的类创建的组件习惯上称为重组件。例如,当用 java.awt包中的Button类创建一个按钮组件时,都有一个相应的本地组件在为它 工作(称为它的同位体)。 javax.swing包为我们提供了更加丰富的、功能强大的组件,称为SWING组 件,其中大部分组件是轻组件,没有同位体

3、。 SWING组件的轻组件在设计上和AWT完全不同,轻组件把与显示组件有关 的许多工作和处理组件事件的工作交给相应的UI代表来完成。这些UI代表是用 Java语言编写的类,这些类被增加到Java的运行环境中,因此组件的外观不依赖 平台,不仅在不同平台上的外观是相同的,而且较组件有更高的性能。如果 Java运行环境低于1.2版本,就不能运行含有SWING组件的程序。 拳 棍 蜒 源 拥 韭 莹 轨 栗 袒 东 硬 瞬 浙 穷 尔 仿 字 符 蛤 传 韦 娜 榨 知 称 残 菩 攻 高 拼 去 J a v a 实 用 P P T 课 件 第 1 0 章 J a v a 实 用 P P T 课 件

4、第 1 0 章 图10.1 JComponent类的部分子类以及JFrame类和JDialog类 勾 虐 抑 矣 戍 河 肄 玛 诽 安 初 唆 继 颅 掳 洛 浩 殖 惰 慈 渭 胖 众 更 椅 郊 涛 傲 妮 仪 村 残 J a v a 实 用 P P T 课 件 第 1 0 章 J a v a 实 用 P P T 课 件 第 1 0 章 容器类(Container)和组件类(Component ) Java把由Component类的子类或间接子类创建的对象称为一个组件;把由 Container的子类或间接子类创建的对象称为一个容器。 可以向容器添加组件。Container类提供了一个pu

5、blic方法add(),一个容 器可以调用这个方法将组件添加到该容器中。 调用removeAll()方法可以移掉容器中的全部组件,调用 remove(Component c)方法可以移掉容器中参数指定的组件。 每当容器添加新的组件或移掉组件时,应该让容器调用validate()方法, 以保证容器中的组件能正确显示出来。 容器本身也是一个组件,因此可以把一个容器添加到另一个容器中实现容器的 嵌套。 javax.swing包中有4个最重要的类JApplet,JFrame,JDialog和 JComponent。 注:JComponent类的子类都是轻组件,JComponent类是java.awt包

6、中Container类的子 类,因此所有的轻组件也都是容器。 而JFrame、JApplet、JDialog都是重组件,即有同位体的组件,这样窗口( JFrame)、对话框(JDialog)、小应用程序(Java Applet)可以和操作系统交互信 息。轻组件必须在这些容器中绘制自己,习惯上称这些容器为SWING的底层容器。 迸 兑 耻 忍 笋 钉 津 撕 乎 拖 伍 葬 贤 井 驼 祸 娩 赚 浩 掷 泌 檀 接 赌 菌 类 卢 换 猛 哇 和 态 J a v a 实 用 P P T 课 件 第 1 0 章 J a v a 实 用 P P T 课 件 第 1 0 章 10.2 JFrame窗

7、体 javax.swing包中的JFrame类是java.awt包中Frame类的子类,因此 JFrame类其子类创建的对象是窗体。 当应用程序需要一个窗口时,可使用JFrame或其子类创建一个对象 。窗口默认地被系统添加到显示器屏幕上,因此不允许将一个窗口添加 到另一个容器中。Frame类常用方法如下: JFrame() 创建一个无标题的窗口。 JFrame(String s) 创建一个标题为s的窗口。 public void setBounds(int a,int b,int width,int height)设置出现在屏幕上时的初始位置 为(a,b),即距屏幕左面a个像素、距屏幕上方b个

8、像素;窗口的宽是width,高是height。 public void setSize(int width,int height) 设置窗口的大小,在屏幕出现默认位置是(0,0) 。 public void setVisible(boolean b) 设置窗口是可见还是不可见,窗口默认是不可见的。 public void setResizable(boolean b) 设置窗口是否可调整大小,窗口默认是可调整大小的。 public void setDefaultCloseOperation(int operation) 该方法用来设置单击窗体右上角的 关闭图标后,程序会做出怎样的处理。其中的参

9、数operation取下列有效值: 1) DO_NOTHING_ON_CLOSE 什么也不做 2)HIDE_ON_CLOSE 隐藏当前窗口 3)DISPOSE_ON_CLOSE 隐 藏当前窗口,并释放窗体占有的其他资源 4)EXIT_ON_CLOSE 结束窗体所在的应用程序 这4个常量都是JFrame类中的static常量,单击关闭图标后,程序根据 operation取值做出不同的处理。 例子10-1用JFrame创建了两个窗口,程序运行效果如图10.2。 乒 袍 诱 榜 涨 篆 扁 椒 件 坞 帝 撩 零 申 世 并 淤 狮 仔 庙 照 挺 弹 龟 敌 缓 锁 柱 邪 繁 远 汾 J a v

10、 a 实 用 P P T 课 件 第 1 0 章 J a v a 实 用 P P T 课 件 第 1 0 章 例子10-1 运行效果图10.2 滞 共 滑 谦 绊 湖 玫 纹 萧 稳 憋 袋 撼 县 低 帜 项 锻 乙 怕 筒 臼 已 佃 迂 影 珐 黔 竟 诈 烬 衷 J a v a 实 用 P P T 课 件 第 1 0 章 J a v a 实 用 P P T 课 件 第 1 0 章 10.3 菜单组件 窗口中的菜单条、菜单、菜单项是我们所熟悉的界面,菜单 条、菜单、菜单项是窗口常用的组件,菜单放在菜单条里,菜单 项放在菜单里。 1JMenuBar菜单条 JComponent类的子类JMe

11、nuBar是负责创建菜单条的,即 JMenuBar的一个实例就是一个菜单条。 JFrame类有一个将菜单条放置到窗口中的方法: public void setJMenuBar(JMenuBar menubar); 该方法将菜单条添加到窗口的菜单条区域(注意:只能向窗 口添加一个菜单条)。 烬 故 惫 闺 名 邑 幽 购 埋 十 彪 禁 射 侯 娇 糟 粳 童 噪 万 盒 襄 衬 彩 狰 胎 铅 朴 始 欣 着 卤 J a v a 实 用 P P T 课 件 第 1 0 章 J a v a 实 用 P P T 课 件 第 1 0 章 2. JMenu菜单 JComponent类的子类JMenu类

12、是负责创建菜单的,即JMenu 的一个实例就是一个菜单。JMenu类的主要方法有以下几种: JMenu(String s) 建立一个指定标题菜单,标题由参数s确定 public void add(MenuItem item) 向菜单增加由参数item指定的 菜单选项对象。 public void add(String s) 向菜单增加指定的选项。 public JMenuItem getItem(int n) 得到指定索引处的菜单选项。 public int getItemCount() 得到菜单选项数目。 伯 硅 嫂 距 搓 乙 柏 庸 暑 郧 锐 唇 瞥 蜜 啄 荫 辟 锁 都 巷 疲 侦

13、 伐 摩 涝 时 磨 拼 兵 杆 擎 虽 J a v a 实 用 P P T 课 件 第 1 0 章 J a v a 实 用 P P T 课 件 第 1 0 章 3. JMenuItem菜单项 JMenuItem是JMenu的父类,该类是负责创建菜单项的,即 JMenuItem的一个实例就是一个菜单项。菜单项放在菜单里。 JMenuItem类的主要方法有以下几种: JMenuItem(String s) 构造有标题的菜单项。 JMenuItem(String text, Icon icon) 构造有标题和图标的菜单项 public void setEnabled(boolean b)设置当前菜

14、单项是否可被选择。 public String getLabel() 得到菜单项的名字。 public void setAccelerator(KeyStroke keyStroke) 为菜单项设置快 捷键。 为了向该方法的参数传递一个KeyStroke对象,可以使用KeyStroke 类的类方法public static KeyStroke getKeyStroke(char keyChar)返回 一个KeyStroke对象;也可以使用KeyStroke类的类方法public static KeyStroke getKeyStroke(int keyCode,int modifiers)返回

15、一个 KeyStroke对象,其中参数keyCode取值范围为KeyEvent.VK_A KeyEvent.VK_Z,modifiers的取值如下:InputEvent.ALT_MASK, InputEvent.CTRL_MASK和InputEvent.SHIFT_MASK。 寓 们 赠 茨 抱 奄 钥 葱 适 甘 外 浸 碧 远 忱 癸 酱 影 偏 堤 良 瞪 耕 汇 锈 习 墓 壮 饰 舅 斌 烩 J a v a 实 用 P P T 课 件 第 1 0 章 J a v a 实 用 P P T 课 件 第 1 0 章 4. 嵌入子菜单 JMenu是JMenuItem的子类,因此菜单项本身还可

16、以是一个菜 单,这样的菜单项称为子菜单。 为了使得菜单项有一个图标,可以用图标类Icon声明一个图 标,然后使用其子类ImageIcon类创建一个图标,如 Icon icon=new ImageIcon(dog.gif ); 下面的例10-2中有一个含有菜单的窗口(效果如图10.3所示) 。 选 恒 龙 照 荤 兹 砌 烯 反 滥 僻 姬 膏 猫 吴 琳 笆 谴 酥 吼 味 议 涸 疏 撕 猴 脉 佃 顺 描 埋 匈 J a v a 实 用 P P T 课 件 第 1 0 章 J a v a 实 用 P P T 课 件 第 1 0 章 10.4 布局设计 当把组件添加到容器中时,希望控制组件在

17、容器 中的位置,这就需要学习布局设计的知识。 本节将介绍java.awt包中的FlowLayout、 BorderLayout、CardLayout、GridLayout布局类和 java.swing.border包中的BoxLayout布局类。 容器可以使用方法 setLayout(布局对象); 来设置自己的布局。 对于JFrame窗口,默认布局是BorderLayout布局 。 忌 连 贾 口 罩 瓤 赣 朽 辨 课 霖 穿 伙 南 逞 旷 篮 嘛 匆 连 肄 郁 豁 瓢 宽 弯 驴 跺 搅 形 馋 湃 J a v a 实 用 P P T 课 件 第 1 0 章 J a v a 实 用 P

18、 P T 课 件 第 1 0 章 1FlowLayout布局 FlowLayout类的对象称为FlowLayout布局。FlowLayout类 的一个常用构造方法如下: FlowLayout();构造方法可以创建一个居中对齐的布局对象,如: FlowLayout flow=new FlowLayout(); con.setLayout(flow); 容器con使用flow这个布局对象 容器con可以使用Container类提供的add()方法将组件顺序地添加到容器中 。 FlowLayout布局对象调用setAlignment(int aligin)方法可以重新设置布局 的对齐方式,其中ali

19、gin可以取值FlowLayout.LEFT、FlowLayout.CENTER或 FlowLayout.RIGHT。 FlowLayout布局对象调用setHgap(int hgap)方法和setVgap(int vgap)方法可 以重新设置布局的水平间隙和垂直间隙。 如果需要改变最佳大小,组件需调用: public void setPreferredSize(Dimension preferredSize) 设置大小,例如:button.setPreferredSize(new Dimension(20,20); 注:对于添加到使用FlowLayout布局的容器中的组件,组件调用setSi

20、ze(int x,int y)设置的大小无效。 例10-3中,JFrame使用FlowLayout布局放置10个组件(效果如图10.4所示) 。 蜂 赠 滁 葡 还 乳 舜 衔 毫 春 线 俩 冲 蔫 帖 阐 低 套 咱 城 苟 来 唐 鲍 评 搞 懈 裳 活 蚜 蚂 侠 J a v a 实 用 P P T 课 件 第 1 0 章 J a v a 实 用 P P T 课 件 第 1 0 章 例子10-3 运行效果图10.4 殷 高 奔 殴 狡 署 逻 存 菠 嗽 顷 封 工 促 翘 辫 割 讫 纪 藤 糙 央 厘 抒 挡 苯 蝗 蜘 搜 馈 幅 鼠 J a v a 实 用 P P T 课 件

21、第 1 0 章 J a v a 实 用 P P T 课 件 第 1 0 章 2BorderLayout布局 BorderLayout布局是Window容器的默认布局。 JFrame、JDialog都是Window类的间接子类,它们的内容面板 的默认布局都是BorderLayout布局。 如果一个容器使用这种布局,那么容器空间简单地划分为东、 西、南、北、中五个区域。每加入一个组件都应该指明把这个组 件添加在哪个区域中,区域由BorderLayout中的静态常量CENTER 、NORTH、SOUTH、WEST、EAST表示。例如, 一个使用BorderLayout布局的容器con,可以使用add

22、()方法将一个组 件b添加到中心区域: con.add(b,BorderLayout.CENTER);或 con.add(BorderLayour.CENTER,b); 注: 添加到某个区域的组件将占据整个这个区域.每个区域只能放置一个组 件,如果向某个已放置了组件的区域再放置一个组件,那么先前的组件将被后 者替换。 注: 使用BorderLayout布局的容器最多能添加5个组件,如果容器中需要添 加的组件超过5个,就必须使用容器的嵌套或改用其他布局策略。 例10-4使用了BorderLayout布局(效果如图10.5所示)。 份 傻 牡 寝 横 闭 苟 锯 膛 该 温 扼 巡 花 乡 帐 哩

23、 皑 雾 瓤 握 莲 辅 沪 炉 扫 侨 丘 瞄 靠 招 已 J a v a 实 用 P P T 课 件 第 1 0 章 J a v a 实 用 P P T 课 件 第 1 0 章 例子10-4 运行效果图10.5 决 奢 抄 磷 缉 狞 智 谎 酒 燎 铃 蚂 椅 浑 层 阔 怔 佬 矗 龋 嗡 壮 渣 祷 辊 呻 霉 淋 令 馅 演 内 J a v a 实 用 P P T 课 件 第 1 0 章 J a v a 实 用 P P T 课 件 第 1 0 章 3CardLayout 布局 使用CardLayout容器可以容纳多个组件,但同一时刻容器只能 从这些组件中选出一个来显示,就像一叠“扑

24、克牌”每次只能显示 最上面的一张一样,这个被显示的组件将占据所有的容器空间。 JTabbedPane窗格的默认布局是CardLayout布局,并且自带 一些选项卡,这些选项卡与用户添加到JTabbedPane窗格中的组件 相对应,单击该选项卡,JTabbedPane窗格将显示对应的组件。选 项卡窗格自带的选项卡默认地在该选项卡窗格的顶部,从左向右 依次排列,选项卡的顺序和所对应的组件的顺序相同。 JTabbedPane窗格可以使用add(String text,Component c);方法将组件c 添加到JTabbedPane窗格中,并指定和组件c对应的选项卡的文本提示是text。 使用JT

25、abbedPane窗格的构造方法 public JTabbedPane(int tabPlacement)创建的选项卡窗格的选项卡的 位置由参数tabPlacement指定,该参数的有效值为JTabbedPane.TOP、 JTtabbedPane.BOTTOM、JTabbedPane.LEFT 和JTabbedPane.RIGHT。 例10-5在选项卡窗格中添加了5个按钮(带有图标),并设置了相对应的 选项卡的文本提示,然后将选项卡窗格添加到窗体的内容面板中(效果如图 10.6所示)。 拓 疮 讣 挣 萧 瘸 驭 疏 苑 溶 打 尧 冒 渠 粱 婪 锁 拒 脂 询 告 汇 信 杖 篡 棱 臃

26、 吏 酮 圣 所 滦 J a v a 实 用 P P T 课 件 第 1 0 章 J a v a 实 用 P P T 课 件 第 1 0 章 例子10-5 运行效果图10.6 似 炳 族 懒 仙 数 凸 郁 劲 瓢 糙 揉 年 埠 埂 帆 漳 难 债 煌 媒 哀 人 硬 蒸 喉 陈 脓 下 么 汰 畴 J a v a 实 用 P P T 课 件 第 1 0 章 J a v a 实 用 P P T 课 件 第 1 0 章 4GridLayout布局 GridLayout是使用较多的布局编辑器,其基本布局策略是把容器划分成若 干行若干列的网格区域,组件就位于这些划分出来的小格中。GridLayou

27、t比较 灵活,划分多少网格由程序自由控制,而且组件定位也比较精确,使用 GridLayout布局编辑器的一般步骤如下: (1)使用GridLayout的构造方法GridLayout(int m,int n)创建布局对象,指 定划分网格的行数m和列数n,如 GridLayout grid=new GridLayout(10,8); (2)使用GridLayout布局的容器调用方法add()将组件加入容器,组件进入容 器的顺序将按照第一行第一个、第一行第二个第一行最后一个、第二行第一 个最后一行第一个最后一行最后一个。 使用GridLayout布局的容器最多可添加mn个组件。GridLayout布

28、局中每 个网格都是相同大小,并且强制组件与网格的大小相同。 由于GridLayout布局中每个网格都是相同大小并且强制组件与网格的大小 相同,使得容器中的每个组件也都是相同的大小,显得很不自然。为了克服这 个缺点,可以使用容器嵌套。例如,一个容器使用GridLayout布局,将容器分 为三行一列的网格,那么可以把另一个容器添加到某个网格中,而添加的这个 容器又可以设置为GridLayout布局、FlowLayout布局、CarderLayout布局或 BorderLayout布局等。利用这种嵌套方法,可以设计出符合一定需要的布局. 媚 凝 刷 详 刻 烂 飘 斧 贡 屿 毅 臼 奈 则 码 潞

29、 浑 干 寅 酮 衍 蝗 绚 钾 釉 幸 厕 申 皑 麓 戴 节 J a v a 实 用 P P T 课 件 第 1 0 章 J a v a 实 用 P P T 课 件 第 1 0 章 5BoxLayout布局 用BoxLayout类可以创建一个布局对象,称为盒式布局。BoxLayout在 java.swing.border包中。java swing包提供了Box类,该类也是Container类的 一个子类,创建的容器称为一个盒式容器。盒式容器的默认布局是盒式布局, 而且不允许更改盒式容器的布局。因此,在策划程序的布局时,可以利用容器 的嵌套,将某个容器嵌入几个盒式容器,达到布局目的。 Box

30、Layou的构造方法BoxLayout(Container con,int axis)可以创建一个 盒式布局对象,并指定容器con使用该布局对象,参数axis的有效值是 BoxLayout.X_AXIS和BoxLayout.Y_AXIS。 Box类的类(静态)方法createHorizontalBox()可以获得一个具有行型盒 式布局的盒式容器;Box类的类(静态)方法createVerticalBox()可以获得一 个具有列型盒式布局的盒式容器。 控制盒式布局容器中组件之间的距离,需要使用水平支撑或垂直支撑。 Box类调用静态方法createHorizontalStrut(int width

31、)可以得到一个不可 见的水平Struct类型对象.称为水平支撑.该水平支撑的高度为0,宽度是width。 Box类调用静态方法createVertialStrut(int height)可以得到一个不可见 的垂直Struct类型对象,称为垂直支撑.参数height决定垂直支撑的高度,垂直 支撑的宽度为0。 例10-6中(效果如图10.7所示),有两个列型盒式容器boxV1、boxV2和一 个行型盒式容器baseBox。在列型盒式容器的组件之间添加垂直支撑,控制组件 之间的距离,将boxV1、boxV2添加到baseBox中,并在它们之间添加水平支撑。 爱 宠 针 够 陵 状 励 任 毒 昨 柱

32、 港 妒 狸 靡 遵 坚 泪 终 施 家 臣 巳 鲸 曼 察 杖 骚 胀 任 咎 削 J a v a 实 用 P P T 课 件 第 1 0 章 J a v a 实 用 P P T 课 件 第 1 0 章 例子10-6 运行效果图10.7 乖 材 兔 盏 台 书 仍 拨 芋 铰 兔 爸 烟 妥 施 温 傅 学 垦 林 榨 场 碎 路 簧 碱 墟 彬 奈 呕 陕 欺 J a v a 实 用 P P T 课 件 第 1 0 章 J a v a 实 用 P P T 课 件 第 1 0 章 6null布局 可以把一个容器的布局设置为null布局(空布局)。 空布局容器可以准确地定位组件在容器的位置和大

33、小。 setBounds(int a,int b,int width,int height)方法是所有组件都拥有的 一个方法,组件调用该方法可以设置本身的大小和在容器中的位 置。例如,p是某个容器: p.setLayout(null);把p的布局设置为空布局。 向空布局的容器p添加一个组件c需要两个步骤。 首先使用add(c)方法向容器添加组件, 然后组件c再调用setBounds(int a,int b,int width,int height)方 法设置该组件在容器中的位置和本身的大小。 组件都是一个矩形结构,方法中的参数a和b是被添加的组件c 的左上角在容器中的位置坐标,即该组件距容器左

34、面a个像素,距 容器上方b个像素;weidth和height是组件c的宽和高。 熄 凿 镍 刨 术 仁 姻 斟 晨 佳 卤 拄 猜 臀 毡 田 桶 觅 妮 窃 了 顶 谐 福 鹏 昆 祷 邻 储 石 伐 释 J a v a 实 用 P P T 课 件 第 1 0 章 J a v a 实 用 P P T 课 件 第 1 0 章 10.5 中间容器_1JPanel面板,2JScrollPane窗格,3JSplitPane窗格 轻组件都是容器,但仍有一些经常用来添加组件的轻容器,相对于底层重 容器而言,我们习惯上称这些轻容器为中间容器。SWING提供了许多功能各异的 中间容器,而且容易学习掌握。本节

35、将简单介绍JPanel面板、JScrollPane滚动 窗格、JSplitPane拆分窗格和JLayeredPane分层窗格。 1JPanel面板 可以使用JPanel创建一个面板,再向这个面板添加组件,然后把这个面板添 加到底层容器或其他中间容器中。JPanel面板的默认布局是FlowLayout布局。 JPanel类构造方法Jpanel()可以构造一个面板容器对象。 2JScrollPane窗格 可以把一个组件放到一个滚动窗格中,然后通过滚动条来观察这个组件。 JScorollPane的构造方法JScorollPane(component c)可以构造一个滚动窗格。 3JSplitPane

36、窗格 拆分窗格有两种类型水平拆分和垂直拆分。水平拆分窗口用一条拆分线把 容器分成左右两部分,左面放一个组件,右面放一个组件,拆分线可以水平移动。 垂直拆分窗格由一条拆分线分成上下两部分,上面放一个组件,下面放一个组件 ,拆分线可以垂直移动。 JSplitPane的构造方法JSplitPane(int a,Component b,Component c)可以 构造一个拆分窗格,参数a取JSplitPane的静态常量 HORIZONTAL_SPLIT或 VERTICAL_SPLIT,以决定是水平还是垂直拆分。后两个参数决定要放置的组件 。拆分窗格调用setDividerLocation(doubl

37、e position)设置拆分线的位置。 烽 提 览 干 舞 玻 摈 绸 点 枝 梧 怂 腆 孟 灼 酒 相 遥 靡 瘸 它 慌 溉 遣 侦 巴 弛 诵 掣 钟 唁 量 J a v a 实 用 P P T 课 件 第 1 0 章 J a v a 实 用 P P T 课 件 第 1 0 章 4JLayeredPane分层窗格 如果添加到容器中的组件经常需要处理重叠问题,就可以考虑 将组件添加到JLayeredPane容器。JLayeredPane容器将容器分成5 个层,容器使用add(Jcomponent com, int layer);添加组件com,并指定 com所在的层,其中参数layer

38、取值JLayeredPane类中的类常量: DEFAULT_LAYER、PALETTE_LAYER、MODAL_LAYER、POPUP_LAYER、DRAG_LAYER。 DEFAULT_LAYER是最底层,添加到DEFAULT_LAYER层的组件如果和其 他层的组件发生重叠时,将被其他组件遮挡。DRAG_LAYER层是最上面 的层,如果JLayeredPane中添加了许多组件,鼠标移动一组件时, 可以把移动的组件放到DRAG_LAYER层。这样,组件在移动过程中,就 不会被其他组件遮挡。添加到同一层上的组件,如果发生重叠,先 添加的会遮挡后添加的组件。JLayeredPane对象调用 pub

39、lic void setLayer(Component c,int layer)可以重新设置组件c所在的层,调用public int getLayer(Component c)可以获取组件c所在的层数。 例10-7在JLayeredPane容器中添加了5个组件,分别位于不同的层上(效果如 图10.8所示) 肋 沽 拨 扣 宠 侩 拷 辜 唤 票 荔 急 琢 斩 浓 禁 披 籽 贩 刁 聊 靠 辊 搓 搬 褂 逗 砸 睛 踞 串 尝 J a v a 实 用 P P T 课 件 第 1 0 章 J a v a 实 用 P P T 课 件 第 1 0 章 例子10-7 运行效果图10.8 季 破 烃

40、 誓 凌 棱 骸 缨 靶 欢 销 磐 尔 碰 庄 兆 猛 嗣 甫 慕 硒 骏 剂 茄 韧 涵 怖 崖 惟 圭 络 篮 J a v a 实 用 P P T 课 件 第 1 0 章 J a v a 实 用 P P T 课 件 第 1 0 章 10.6 文本组件_ 1 JTextField文本框,2 JPasswordField密码框 1JTextField文本框 JComponent的子类JTextField是专门用来建立文本框的,即JTextField创建 的一个对象就是一个文本框。用户可以在文本框输入单行的文本。 JTextField类的主要方法如下: JTextField(int x) 创建

41、文本框对象,可以在文本框中输入若干个字符,文本框的 可见字符个数由参数 x指定。 JTextField(String s) 创建文本框对象,则文本框的初始字符串为s,可以在文本 框中输入若干个字符。 public void setText(String s) 设置文本框中的文本为参数s指定的文本,文本框 中先前的文本将被清除。 public String getText() 获取文本框中的文本。 public void setEditable(boolean b) 指定文本框的可编辑性。创建的文本框默认 是可编辑的。 public void setHorizontalAlignment(int

42、 alignment) 设置文本在文本框中的对 齐方式,alignment的有效值为JTextField.LEFT、JTextField.CENTER和 JTextField.RIGHT。 2JPasswordField密码框 使用JTextField的子类JPasswordField可以建立一个密码框对象。密码框可 以使用setEchoChar(char c)设置回显字符(默认的回显字符是*), char getPassword()方法返回密码框中的密码。 廊 喝 解 处 垛 庭 谬 吱 贡 跪 秧 泄 菜 翻 沂 位 幻 皂 赦 戮 遣 咎 鸟 懊 醇 六 缘 焚 叁 掘 柠 峰 J a

43、v a 实 用 P P T 课 件 第 1 0 章 J a v a 实 用 P P T 课 件 第 1 0 章 3ActionEvent事件 当用户在有输入焦点的文本框中按回车键、单击按钮、在一个 下拉式列表中选择一个条目等操作时,都发生界面事件。程序有时 要对发生的事件做出反应,来实现特定的任务。 在学习处理事件时,读者必须很好地掌握事件源、监视器、 处理事件的接口这三个概念。 JTextField和JPasswordField触发ActionEvent事件,通过处 理文本框这个具体的组件上的事件,来掌握处理事件的基本原理。 仗 苇 伯 琳 眺 晦 亮 痛 溜 弊 邦 鲸 肪 份 阶 汹 踪

44、 纽 呆 畸 阳 浮 找 逗 函 吝 召 酞 催 骤 朱 府 J a v a 实 用 P P T 课 件 第 1 0 章 J a v a 实 用 P P T 课 件 第 1 0 章 3ActionEvent事件_处理事件的基本原理 1)事件源: 能够产生事件的对象都可以称为事件源,如文本框、按钮、下拉式列 表等。也就是说,事件源必须是一个对象,而且这个对象必须是Java认为能够发生 事件的对象。 2)监视器: 我们需要一个对象对事件源进行监视,以便对发生的事件做出处理。 事件源通过调用相应的方法将某个对象作为自己的监视器。例如,对于文本框,这 个方法是:addActionListener(Ac

45、tioListener listener) 对于获取了监视器的文本框对象,在文本框获得输入焦点之后,如果用户按回 车键,Java运行系统就自动用ActionEvent类创建了一个对象,即发生了 ActionEvent事件。也就是说,事件源获得监视器之后,相应的操作就会导致事件 的发生,并通知监视器,监视器就会做出相应的处理。 3)处理事件的接口: 发生ActionEvent事件的事件源对象获得监视器方法是: addActionListener(ActionListener listener);该方法中的参数是ActionListener 类型的接口,因此必须将一个实现ActionListene

46、r接口的类创建的对象传递给该 方法的参数,使得该对象成为事件源的监视器。 监视器负责调用特定的方法处理事件,创建监视器的类必须提供处理事件的 特定方法,即实现接口方法。Java采用接口回调技术来处理事件,当事件源发生事 件时,接口立刻通知监视器自动调用实现的某个接口方法,接口方法规定了怎样处 理事件的操作。 催 熟 嗅 吃 脓 同 嚷 掇 恩 勘 诞 似 陨 质 沼 哎 狮 庸 恿 轮 蝉 雕 屹 面 慕 扦 昆 作 追 用 瓦 叁 J a v a 实 用 P P T 课 件 第 1 0 章 J a v a 实 用 P P T 课 件 第 1 0 章 3ActionEvent事件_事件处理模式

47、图10.9 接口回调这一过程对程序是不可见的,Java在设计组件事件时已经设置好了 这一回调过程,程序只需让事件源获得正确的监视器,即将实现了正确接口的对 象的引用传递给方法addActionListener(ActionListener listener)中的参数 listener。 我们称文本框和密码框事 件源可以发生ActionEvent类 型事件。为了能监视到这种类 型的事件,事件源必须使用 addActionListener()方法获得监 视器;创建监视器的类必须实 现接口ActionListener。 事件处理模式如图10.9 所示. 蓄 胳 佳 寅 坐 埋 菩 殿 浚 夹 禹 漠

48、 衫 全 殃 眩 奴 瓜 店 俯 瓤 订 誉 瞎 掌 救 刘 尽 姬 伏 早 闯 J a v a 实 用 P P T 课 件 第 1 0 章 J a v a 实 用 P P T 课 件 第 1 0 章 3ActionEvent事件_ ActionEvent类中的方法 4)ActionEvent类中的方法 ActionEvent事件对象调用方法public Object getSource()可以返回发生 ActionEvent事件的对象的引用。 ActionEvent事件对象调用方法public String getActionCommand()获取发生 ActionEvent事件时,和该事件

49、相关的一个命令字符串,对于文本框,当发生 ActionEvent事件时,用户在文本框中输入的文本字符串就是和该事件相关的一 个命令字符串。 例10-8中,窗口中有一个文本框text,text的事件监视器由PoliceStation 类负责创建。当用户在text中输入字符串回车后,监视器负责在命令输出该字符 串以及它的长度(效果如图10.10所示)。 例10-9中,titleText和passwordText有监视器。当在titleText中输入字符串回 车后,监视器负责将窗体的标题更改为当前titleText中的文本。当在passwordText 中输入密码回车后,监视器负责将密码显示在titleText中(效果如图10.11所示)。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1