You are on page 1of 12
Java 程序设计大学教程 第七章 程序设计案例分析 Java 为我们设计图形界面应用程序提 供了丰富的 GUI 组件,但是 Java 图形 界面应用程序的设计仍然比较复杂。本 章我们配合这章内容将介绍一个设计案 例——单词赢家软件。通过剖析和研究 该应用程序的设计过程,我们不仅可以 对窗体、菜单、组件、事件、布局等的 设计有一个感性的综合的了解,还可以 掌握使用开发工具( NetBeans IDE ) 完成开发项目的一般过程和方法,积累 实际编程经验。 Java 程序设计大学教程 7.1 可视化程序设计与 NetBeans IDE  可视化程序设计是基于图形用户界面( GUI )和可视化组 件的一种快速应用开发( RAD )方法;可视化程序设计可 以根据用户需求快速建立原型,验证并实现用户需求;并 通过所见即所得的开发提高编程工作的效率。  Java 有一些优秀的可视化编程工具提供了功能有限的可视 化程序设计开发环境,但目前 Java 程序设计无法完全依赖 于可视化编程工具的支持,仍然有很多工作需要手工编程 来完成。  NetBeans IDE 提供了一些工具,可帮助我们以可视化方 式设计和生成 Java 窗体,简化图形用户界面的设计过程, 这些工具包括窗体编辑器、检查器窗口、组件面板窗口、 属性窗口、连接向导。 Java 程序设计大学教程 7.1 可视化程序设计与 NetBeans IDE 使用 NetBeans IDE 在窗体编辑 器“设计”视图中 组件面板窗口 处理某个窗体时, 将自动生成代码, 并在“源”视图中 项目窗口 检查器窗口 以蓝色背景显示这 些代码。此代码称 为“受保护文本” 窗体编辑器 ,不能直接对其进 属性窗口 行编辑。 Java 程序设计大学教程 7.2 设计窗体  Java 应用程序的窗体包括:用作顶层窗体的框架 窗体( JFrame );用于放置内容的面板窗体 ( JPanel );用于用户交互的对话框窗体 ( JDialog )等。设计窗体除了要设计窗体中的 GUI 组件和布局外,还要设计相关的事件处理程序 。  在 NetBeans IDE 中,可以利用新建文件向导创 建具有选定类型的空白窗体,并获得系统生成的基 本代码。 Java 程序设计大学教程 7.2.1 创建主窗体和主面板 在 NetBeans IDE 中创建新窗体的步骤如下:  从主菜单中选择菜单项:“文件 -> 新建文件”。  在“新建文件”向导中展开“ Java GUI 窗体 ”节点,然后选择一个窗体模板——“ JFrame 窗体”,然后单击下一步。  在 “新建 JFrame 窗体”向导中输入新建窗体 的名称和位置。然后单击完成。  NetBeans IDE 将创建具有选定类型的空白窗 体,并在“编辑器”标签的“设计”视图中打 开该窗体。 Java 程序设计大学教程 7.2.2 组件与布局设计  在 NetBeans IDE 可视化设计时,使用“组件面板”窗 口、窗体编辑器或“检查器”窗口来添加组件并更改大 多数容器的布局。  可以先利用 AbsoluteLayout 布局设计好程序界面,然 后再将容器的绝对布局转化成合适的相对布局。如果容 器中的 GUI 元素比较复杂,则可以转化为功能强大的 GridBagLayout 布局。 Java 程序设计大学教程 7.2.3 添加事件  在 NetBeans IDE 可视化设计时,可以使用组件的“属性”窗口或 上下文菜单添加事件,定义事件处理程序。系统将自动生成事件监听 器的代码和处理程序方法的空主体。  我们可以使用组件的“属性”窗口或上下文菜单定义事件处理程序。 使用“属性”窗口定义事件处理程序的步骤如下(以 startButton 的 Action 事件为例):  在“检查器”窗口中选择组件 startButton ,然后在“属性”窗口中 单击“事件”。 // 自动生成事件监听器的代码(不可编辑)  在列表中单击所需事件的值 actionPerformed startButton.addActionListener(new 。初始时,所有事件 { java.awt.event.ActionListener() 的值均为 void < 无 > 将替换为缺省事件名。 actionPerformed(java.awt.event.ActionEvent 。当单击值字段时, evt) { testWord(evt);  在属性表单中,键入所需的处理程序名称并按 } Enter 键,或者直接按 Enter//键以使用缺省处理程序名称。如果未按 处理程序方法的空主体(方法头不可编辑,但是方法体可编辑) 选择要添加的 事件处理程序 Enter 键,将不生成任 何代码。也可以单击事件的省略号( ... ) 按钮以显示“处理程序” private void testWord(java.awt.event.ActionEvent evt) { // TODO 将在此处添加您的处理代码: 对话框。单击“添加”按钮,将新的名称 testWord 添加到处理程序 } 列表中,然后单击“确定”。  此时系统自动生成事件监听器的代码和处理程序方法的空主体 。 Java 程序设计大学教程 7.3 设计菜单和对话框  设计菜单和对话框是图形界面应用程序的最常 见特征,菜单可以用于调用不同的程序操作模 块,而通过对话框则可完成特定的设置或操作 任务。 Java 程序设计大学教程 7.3.1 设计菜单 手工创建菜单时,需要先创建菜单项对象( private  void initComponents() { JMenuItem 的实 ... ... 例)、菜单对象( JMenu 的实例)、菜单栏对象 menuItemExit.addActionListener(new ( JMenuBar 的实例)。然后把菜单项对象添加到菜单对象中 java.awt.event.ActionListener() { ;把菜单对象添加到菜单栏对象中。最后使用 setJMenuBar public void actionPerformed(java.awt.event.ActionEvent evt) { 方法,为那个能使用菜单的容器组件添加完整的主菜单栏。使 用 NetBeans IDE 在窗体编辑器中可视化设计菜单。 menuItemExitActionPerformed(evt); }  使用 ... ... NetBeans IDE 在窗体编辑器中可视化设计菜单,使得编 写菜单程序颇为简单。具体步骤如下: }); }  首先在窗体编辑器中创建菜单栏 private void  然后将菜单添加到菜单栏中 menuItemExitActionPerformed(java.awt.event.ActionEvent evt) {  接着是添加菜单项 exit();// 用户添加的代码 }  最后为菜单项添加事件 Java 程序设计大学教程 7.3.2 设计对话框  对话框根据其显示模式分为模态对话框和非模态对话框。模态对话框在用 户处理它之前不允许用户同应用程序的主窗口进行交互。非模态对话框允 许用户同时在该对话框和程序其他窗体中切换操作,而不用关闭该对话框 。  Java 类库中现成的专用对话框包括:用于显示消息的选项对话框 ( JOptionPane ),以及一些标准对话框,如:文件选择对话框 ( JFileChooser )、颜色选择对话框( JColorChooser )。  选项对话框 JOptionPane 是典型的模态对话框。 JOptionPane 有四个静 态方法来显示不同类型的消息,它们是: showMessageDialog 、 showConfirmDialog 、 showOptionDialog 、 showInputDialog 。  文件选择对话框( JFileChooser ),可以允许用户通过一个图形化文件系 统浏览程序访问文件系统,打开(调用 showOpenDialog 方法)或保存 (调用 showSaveDialog 方法)一个文件。  自定义对话框是继承自 JDialog 基类,并由程序员自己设计的对话框。 Java 程序设计大学教程 7.4 设计算法 在单词赢家软件中,要求程序能够从词库文件中解析出单 打开文件 从词库文件中读 将单词解析成 英文单词表 wordsEnglish 词的中英文对照字符串,并将 open() 出所有单词 50 个词汇一组生成一个供测 中英文字符串 试的单词组。用户一次进行一组词汇的英译中或中译英的列表 中文注释表 wordsChinese 选择题测试。其核心的算法涉及: loadWords()  操作设置 如何从词库文件中解析出单词的中英文对照字符串,并 单词 随机分组 试题迭代器 it1 50 构造测试词 生成测试单词组。其中包括了顺序生成和随机生成 setup() 分组 汇迭代器 个测试词汇。 顺序分组 答案迭代器 it2  makeTestList( 如何产生测试选择题的 ) 4 个选项,其中要求正确答案的 词汇测试 ABCD 位置随机变化以及随机生成另外 生成选 生成答案随机位置 3 个用于干扰的 遍历测试迭 评判显示 假答案。 择题 生成随机伪装答案 test() 代器  如何在图形界面上实现用户交互,完成答题过程。 分数统计 makeKeys() Java 程序设计大学教程 7.5 完成和部署应用程序  完成 WordWinner 应用程序 。  MainForm.java 文件, MainForm 类  MainPanel.java 文件, MainPanel 类  SetUpDialog.java 文件, SetUpDialog 类  打包 Java 应用程序  在 NetBeans IDE 中生成 JAR 文件  部署和运行 Java 应用程序 java -jar WordWinner.jar