22. Swing GUl swing GUI=new Swing GUIO 23. swing GUI goo 26.public void goo i 27 topLevel =new JFrame("Swing GUI") 29. //Set up the JPanel, which contains the text field 30∥ and list 32 jTextField=new JTextField(20); 33.List=new JList(list Data); 35.content Pane=topLevel. get Content Paneo 36.content Pane. setLayout(new BorderLayoutO) 38 b1=new J Button("1") 39b2=new J Button("2"); 40content Pane. add(bl, BorderLayout. NORTH); 41. content Pane. add(b2, borderLayout SOUTH) 43.jPanel. setLayout( new FlowLayouto); 44.jPanel. add TextField) 45. Panel. add(jList) 46.content Pane. add(Panel, Border Layout. CENTER) 48. topLevel pack (; 49.topLevel set Visible(true) 51.} 第六节 JComponent类 JCo nt类 Swing组件是 J Component的子类 边框 双缓冲 提示框 键盘导航 应用程序范围的可插式外观和感觉 所有Swng都作为 J Component的子类来实现,而 J Component类又是从 Container类继承而来。 Swing 组件从 JComponent继承了如下功能 边框 你可以用 set border方法来指定在组件周围显示的边框。还可用一个 Empty Border的实例来指
114 22.SwingGUI swingGUI = new SwingGUI(); 23.swingGUI.go(); 24.} 25. 26.public void go() { 27.topLevel = new JFrame("Swing GUI"); 28. 29.// Set up the JPanel, which contains the text field 30.// and list. 31.jPanel = new JPanel(); 32.jTextField = new JTextField(20); 33.jList = new JList(listData); 34. 35.contentPane = topLevel.getContentPane(); 36.contentPane.setLayout(new BorderLayout()); 37. 38.b1 = new JButton("1"); 39.b2 = new JButton("2"); 40.contentPane.add(b1, BorderLayout.NORTH); 41.contentPane.add(b2, BorderLayout.SOUTH); 42. 43.jPanel.setLayout(new FlowLayout()); 44.jPanel.add(jTextField); 45.jPanel.add(jList); 46.contentPane.add(jPanel, BorderLayout.CENTER); 47. 48.topLevel.pack(); 49.topLevel.setVisible(true); 50.} 51.} 第六节 JComponent 类 所有 Swing 都作为 JComponent 的子类来实现,而 JComponent 类又是从 Container 类继承而来。Swing 组件从 JComponent 继承了如下功能: ⚫ 边框 你可以用 setBorder()方法来指定在组件周围显示的边框。还可用一个 EmptyBorder 的实例来指 JComponent 类 ⚫ Swing 组件是 JComponent 的子类 ⚫ 边框 ⚫ 双缓冲 ⚫ 提示框 ⚫ 键盘导航 ⚫ 应用程序范围的可插式外观和感觉
定一个组件在其周围留有一定的额外空间 ●双缓冲 双缓冲可以改善一个频繁被改变的组件的外观。现在你不需要编写双缓冲代码-- Swing已为 你提供了。缺省情况下, Swing组件是双缓冲的 提示框 通过用 setTool Tip TextO方法来指定一个字符串,你可以提供给用户有关某个组件的帮助信息。 当光标暂停在组件上时,所指定的字符串就会在组件附近的一个小窗口中显示出来 ●键盘导航 使用 register KeyboardActiono方法,你可以让用户以键盘代替鼠标来操作GUL。用户为启动 个动作所必须按下的修饰键与字符的组合,由一个 KeyStroke对象来表示 应用程序范围的可插式外观和感觉 专每个JaNa应用程序在运行时刻有一个 GUIManager对象,它用于确定运行时刻Swg组件的外 和感觉。由于安全性的限制,你可以通过调用 UIManager. setlook Feel()方法选择所有 Swing 组件的外观和感觉。在你所看见的东西背后,每个 J Component对象都有一个对应的 ComponentGUI 对象,它用来执行所有关于该 JComponent的绘制、事件处理、大小判定等任务。 练习:熟悉 Swing 练习目标一在本实验中,你将编写、编译和执行两个在GUI中使用 Swing组件的程序 、准备 为了更好地完成这个练习,你必须理解 Swing组件和AWT组件的关系 、任务 水平1:创建一个基本的 Swing应用程序 1.使用文本编辑器,创建一个与前面所讨论的 Bellowing类似的应用程序 2.将一个图标与按钮相关联。(提示一你可能需要使用 Imagelcon类。) 3.将一个提示框与按钮相关联,这样当鼠标移动到按钮之上时,会显示一个“ JFC Button”的 提示框 水平2:用 Swing组件创建一个文本编辑器 1.创建一个初始的 J frame,它包含一个 JToolBar, TextArea和 JLabel 2.将一个 J MenuBar与 J frame关联起来。 3.创建 J Bar上的第一个菜单。创建一个标记为 JMenu,其 JMenultems包括New,Open Save和 Close 4.为每个条目增加一个加速键。使用标签的第一个字母 5.为每个 J Menuitem创建一个匿名的 Action Listener,用来处理事件并调用与每个事件对应的 方法 6.将带有 About j menuitem的 HelpJMenu加入到 J Menubar。分别为H和A增加快捷键。 7.在与 About J Menuitem相关联的事件处理器中创建一个模式对话框。 8.在工具条上创建4个 J Button,标为New,Open,Save和 About 9.为工具条上的每个按钮增加一个带有适当消息的提示框。此外,创建一个匿名 Action Listener 来处理适当的事件 保存并编译程序
115 定一个组件在其周围留有一定的额外空间。 ⚫ 双缓冲 双缓冲可以改善一个频繁被改变的组件的外观。现在你不需要编写双缓冲代码――Swing 已为 你提供了。缺省情况下,Swing 组件是双缓冲的。 ⚫ 提示框 通过用 setToolTipText()方法来指定一个字符串,你可以提供给用户有关某个组件的帮助信息。 当光标暂停在组件上时,所指定的字符串就会在组件附近的一个小窗口中显示出来。 ⚫ 键盘导航 使用 registerKeyboardAction()方法,你可以让用户以键盘代替鼠标来操作 GUI。用户为启动一 个动作所必须按下的修饰键与字符的组合,由一个 KeyStroke 对象来表示。 ⚫ 应用程序范围的可插式外观和感觉 每个 Java 应用程序在运行时刻有一个 GUIManager 对象,它用于确定运行时刻 Swing 组件的外 观和感觉。由于安全性的限制,你可以通过调用 UIManager.setLookAndFeel()方法选择所有 Swing 组件的外观和感觉。在你所看见的东西背后,每个 JComponent 对象都有一个对应的 ComponentGUI 对象,它用来执行所有关于该 JComponent 的绘制、事件处理、大小判定等任务。 练习:熟悉 Swing 练习目标-在本实验中,你将编写、编译和执行两个在 GUI 中使用 Swing 组件的程序。 一、准备 为了更好地完成这个练习,你必须理解 Swing 组件和 AWT 组件的关系。 二、任务 水平 1:创建一个基本的 Swing 应用程序 1. 使用文本编辑器,创建一个与前面所讨论的 HelloSwing 类似的应用程序。 2. 将一个图标与按钮相关联。(提示-你可能需要使用 ImageIcon 类。) 3. 将一个提示框与按钮相关联,这样当鼠标移动到按钮之上时,会显示一个“JFC Button”的 提示框。 水平 2:用 Swing 组件创建一个文本编辑器 1. 创建一个初始的 JFrame,它包含一个 JToolBar,TextArea 和 JLabel。 2. 将一个 JMenuBar 与 JFrame 关联起来。 3. 创建 JMenuBar 上的第一个菜单。创建一个标记为 JMenu,其 JMenuItems 包括 New,Open, Save 和 Close。 4. 为每个条目增加一个加速键。使用标签的第一个字母。 5. 为每个 JMenuItem 创建一个匿名的 ActionListener,用来处理事件并调用与每个事件对应的 方法。 6. 将带有 About JMenuItem 的 HelpJMenu 加入到 JMenuBar。分别为 H 和 A 增加快捷键。 7. 在与 About JMenuItem 相关联的事件处理器中创建一个模式对话框。 8. 在工具条上创建 4 个 JButton,标为 New,Open,Save 和 About。 9. 为工具条上的每个按钮增加一个带有适当消息的提示框。此外,创建一个匿名 ActionListener 来处理适当的事件。 10.保存并编译程序
练习小结 论一花几分钟时间讨论一下,在本实验练习过程中你都经历、提出和发现了什么。 验释结 应用 四、检查你的进度 在进入下一个模块的学习之前,请确认你能够: 认识Java基础类的关键特性 描述 com. sun Java swing包的关键特性 认识 Swing组件 定义容器和组件,并解释如何联合使用它们来构造一个 Swing guI 编写,编译并运行一个基本的 Swing应用程序 高效地使用诸如 JFrame和 JApplet等顶层容器 五、思考题 你现在已经知道了如何编写GUI应用程序。假设你想在一个Web浏览器中运行一个GUI应用程序, 如何做到这点?
116 三、练习小结 讨论 - 花几分钟时间讨论一下,在本实验练习过程中你都经历、提出和发现了什么。 ⚫ 经验 ⚫ 解释 ⚫ 总结 ⚫ 应用 四、检查你的进度 在进入下一个模块的学习之前,请确认你能够: ⚫ 认识 Java 基础类的关键特性 ⚫ 描述 com.sun.java.swing 包的关键特性 ⚫ 认识 Swing 组件 ⚫ 定义容器和组件,并解释如何联合使用它们来构造一个 Swing GUI ⚫ 编写,编译并运行一个基本的 Swing 应用程序 ⚫ 高效地使用诸如 JFrame 和 JApplet 等顶层容器 五、思考题 你现在已经知道了如何编写 GUI 应用程序。假设你想在一个 Web 浏览器中运行一个 GUI 应用程序, 如何做到这点?
第12章Jvav小程序介绍 本模块讨论了JDK对 Applet的支持,以及Aplt在编程方式、操作上下文和如何开始等方面与应 用程序的区别。 stexaywads ca红o object-Oriented Programming E不n eloping Graphical User Interfaces opment LuY Applets Multithread i FdM Nebwcck'ng 第一节相关问题 论一以下为与本模块内容有关的问题 · Applet有那些优点? 第二节目标 在完成了本模块的学习后,你应当能够 117
117 第12章 Jvav 小程序介绍 本模块讨论了 JDK 对 Applet 的支持,以及 Applet 在编程方式、操作上下文和如何开始等方面与应 用程序的区别。 第一节 相关问题 讨论 - 以下为与本模块内容有关的问题: ⚫ Applet 有那些优点? 第二节 目 标 在完成了本模块的学习后,你应当能够:
区分独立应用程序和 Applet 编写一个HIML标记来调用 Java Applet 描述 Applet和AWT的类层次 创建 HelloWorld. Java Applet 列出 Applet的主要方法 描述和使用AWT的绘图模型 使用 Applet方法从URL读取图像和文件 使用 param>标记配置 Applet 第三节什么是 Applet? 什么是 Applet? 能嵌入到一个HIML页面中且可通过web浏览器下载 和执行的一种Java类 可以以下方式装载 浏览器装载URL 浏览器装载HIML文档 ·浏览器装载 Applet类 浏览器运行 Applet Applet是能够嵌入到一个HIML页面中,且可通过web浏览器下载和执行的一种Java类。它是Java 技术容器( container)的一种特定类型,其执行方式不同于应用程序。一个应用程序是从它的 maino方法被 调用开始的,而一个 Applet的生命周期在一定程度上则要复杂得多。本模块分析了 Applet如何运行,如 何被装载到浏览器中,以及它是如何编写的 123.1装入 applet 由于 Applet在web浏览器环境中运行,所以它并不直接由键入的一个命令启动。你必须要创建 个HIML文件来告诉浏览器需装载什么以及如何运行它 118
118 ⚫ 区分独立应用程序和 Applet ⚫ 编写一个 HTML 标记来调用 Java Applet ⚫ 描述 Applet 和 AWT 的类层次 ⚫ 创建 HelloWorld.Java Applet ⚫ 列出 Applet 的主要方法 ⚫ 描述和使用 AWT 的绘图模型 ⚫ 使用 Applet 方法从 URL 读取图像和文件 ⚫ 使用<param>标记配置 Applet 第三节 什么是 Applet? Applet 是能够嵌入到一个 HTML 页面中,且可通过 Web 浏览器下载和执行的一种 Java 类。它是 Java 技术容器(container)的一种特定类型,其执行方式不同于应用程序。一个应用程序是从它的 main()方法被 调用开始的,而一个 Applet 的生命周期在一定程度上则要复杂得多。本模块分析了 Applet 如何运行,如 何被装载到浏览器中,以及它是如何编写的。 12.3.1 装入 Applet 由于 Applet 在 Web 浏览器环境中运行,所以它并不直接由键入的一个命令启动。你必须要创建一 个 HTML 文件来告诉浏览器需装载什么以及如何运行它。 什么是 Applet? ⚫ 能嵌入到一个 HTML 页面中且可通过 Web 浏览器下载 和执行的一种 Java 类 ⚫ 可以以下方式装载: ⚫ 浏览器装载 URL ⚫ 浏览器装载 HTML 文档 ⚫ 浏览器装载 Applet 类 ⚫ 浏览器运行 Applet