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。初始时,所有事件的值均为 <无 >。当单击值字段时,<无 >将替换为缺省事件名。
在属性表单中,键入所需的处理程序名称并按 Enter键,或者直接按
Enter键以使用缺省处理程序名称。如果未按 Enter键,将不生成任何代码。也可以单击事件的省略号(,..) 按钮以显示,处理程序,
对话框。单击,添加,按钮,将新的名称 testWord添加到处理程序列表中,然后单击,确定,。
此时系统自动生成事件监听器的代码和处理程序方法的空主体 。
选择要添加的事件处理程序
//自动生成事件监听器的代码(不可编辑)
startButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
testWord(evt);
}
//处理程序方法的空主体(方法头不可编辑,但是方法体可编辑)
private void testWord(java.awt.event.ActionEvent evt) {
// TODO 将在此处添加您的处理代码:
}
Java程序设计大学教程
7.3 设计菜单和对话框
设计菜单和对话框是图形界面应用程序的最常见特征,菜单可以用于调用不同的程序操作模块,而通过对话框则可完成特定的设置或操作任务。
Java程序设计大学教程
7.3.1 设计菜单
手工创建菜单时,需要先创建菜单项对象( JMenuItem的实例)、菜单对象( JMenu的实例)、菜单栏对象( JMenuBar
的实例)。然后把菜单项对象添加到菜单对象中;把菜单对象添加到菜单栏对象中。最后使用 setJMenuBar方法,为那个能使用菜单的容器组件添加完整的主菜单栏。使用 NetBeans
IDE在窗体编辑器中可视化设计菜单。
使用 NetBeans IDE在窗体编辑器中可视化设计菜单,使得编写菜单程序颇为简单。具体步骤如下:
首先在窗体编辑器中创建菜单栏
然后将菜单添加到菜单栏中
接着是添加菜单项
最后为菜单项添加事件
private void initComponents() {
...,..
menuItemExit.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt)
{
menuItemExitActionPerformed(evt);
}
...,..
});
}
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 设计算法在单词赢家软件中,要求程序能够从词库文件中解析出单词的中英文对照字符串,并将 50个词汇一组生成一个供测试的单词组。用户一次进行一组词汇的英译中或中译英的选择题测试。其核心的算法涉及:
如何从词库文件中解析出单词的中英文对照字符串,并生成测试单词组。其中包括了顺序生成和随机生成 50
个测试词汇。
如何产生测试选择题的 4个选项,其中要求正确答案的
ABCD位置随机变化以及随机生成另外 3个用于干扰的假答案。
如何在图形界面上实现用户交互,完成答题过程。
从词库文件中读出所有单词单词分组打开文件
open()
将单词解析成中英文字符串列表英文单词表 wordsEnglish
中文注释表 wordsChinese
操作设置
setup()
词汇测试
test()
随机分组顺序分组构造测试词汇迭代器试题迭代器 it1
答案迭代器 it2
生成选择题生成答案随机位置生成随机伪装答案遍历测试迭代器评判显示分数统计
loadWords()
makeTestList()
makeKeys()
Java程序设计大学教程
7.5 完成和部署应用程序
完成 WordWinner应用程序 。
MainForm.java文件,MainForm类
MainPanel.java文件,MainPanel类
SetUpDialog.java文件,SetUpDialog类
打包 Java应用程序
在 NetBeans IDE中生成 JAR 文件
部署和运行 Java应用程序
java -jar WordWinner.jar
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。初始时,所有事件的值均为 <无 >。当单击值字段时,<无 >将替换为缺省事件名。
在属性表单中,键入所需的处理程序名称并按 Enter键,或者直接按
Enter键以使用缺省处理程序名称。如果未按 Enter键,将不生成任何代码。也可以单击事件的省略号(,..) 按钮以显示,处理程序,
对话框。单击,添加,按钮,将新的名称 testWord添加到处理程序列表中,然后单击,确定,。
此时系统自动生成事件监听器的代码和处理程序方法的空主体 。
选择要添加的事件处理程序
//自动生成事件监听器的代码(不可编辑)
startButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
testWord(evt);
}
//处理程序方法的空主体(方法头不可编辑,但是方法体可编辑)
private void testWord(java.awt.event.ActionEvent evt) {
// TODO 将在此处添加您的处理代码:
}
Java程序设计大学教程
7.3 设计菜单和对话框
设计菜单和对话框是图形界面应用程序的最常见特征,菜单可以用于调用不同的程序操作模块,而通过对话框则可完成特定的设置或操作任务。
Java程序设计大学教程
7.3.1 设计菜单
手工创建菜单时,需要先创建菜单项对象( JMenuItem的实例)、菜单对象( JMenu的实例)、菜单栏对象( JMenuBar
的实例)。然后把菜单项对象添加到菜单对象中;把菜单对象添加到菜单栏对象中。最后使用 setJMenuBar方法,为那个能使用菜单的容器组件添加完整的主菜单栏。使用 NetBeans
IDE在窗体编辑器中可视化设计菜单。
使用 NetBeans IDE在窗体编辑器中可视化设计菜单,使得编写菜单程序颇为简单。具体步骤如下:
首先在窗体编辑器中创建菜单栏
然后将菜单添加到菜单栏中
接着是添加菜单项
最后为菜单项添加事件
private void initComponents() {
...,..
menuItemExit.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt)
{
menuItemExitActionPerformed(evt);
}
...,..
});
}
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 设计算法在单词赢家软件中,要求程序能够从词库文件中解析出单词的中英文对照字符串,并将 50个词汇一组生成一个供测试的单词组。用户一次进行一组词汇的英译中或中译英的选择题测试。其核心的算法涉及:
如何从词库文件中解析出单词的中英文对照字符串,并生成测试单词组。其中包括了顺序生成和随机生成 50
个测试词汇。
如何产生测试选择题的 4个选项,其中要求正确答案的
ABCD位置随机变化以及随机生成另外 3个用于干扰的假答案。
如何在图形界面上实现用户交互,完成答题过程。
从词库文件中读出所有单词单词分组打开文件
open()
将单词解析成中英文字符串列表英文单词表 wordsEnglish
中文注释表 wordsChinese
操作设置
setup()
词汇测试
test()
随机分组顺序分组构造测试词汇迭代器试题迭代器 it1
答案迭代器 it2
生成选择题生成答案随机位置生成随机伪装答案遍历测试迭代器评判显示分数统计
loadWords()
makeTestList()
makeKeys()
Java程序设计大学教程
7.5 完成和部署应用程序
完成 WordWinner应用程序 。
MainForm.java文件,MainForm类
MainPanel.java文件,MainPanel类
SetUpDialog.java文件,SetUpDialog类
打包 Java应用程序
在 NetBeans IDE中生成 JAR 文件
部署和运行 Java应用程序
java -jar WordWinner.jar