§ 4.2对话框和菜单
本节的主要内容如下,
? 使用 JOptionPane类提供的方法生成标准对话框
? 使用 JDialog类实现自定义对话框
? 使用 JMenuBar类实现菜单条
? 使用 JMenu类实现菜单
? 使用 JMenuItem类实现菜单项
4.2.1 对话框
? 对话框必须依附于某个窗口并由这个窗口负责
弹出,如果该窗口关闭了,对话框也随着关闭。
? 对话框有模式对话框 (Modal Dialog)和非模式对
话框 (Non-modal Dialog)两种。模式对话框与非
模式对话框的区别是:当模式对话框弹出时,
只有关闭此对话框才能继续进行其它窗口的操
作;非模式对话框弹出时,即使不关闭,也可
以对后面的的窗口进行操作。
4.2.1 对话框
? 标准对话框
在 Swing中,可以利用 javax.swing.JOptionPane
类中的各个静态方法来生成各种标准的对话框,
实现显示出信息、提出问题、警告、用户输入
参数等功能。这些对话框都是模式对话框。
4.2.1 对话框
? JOptionPane类提供四个常用静态方法来显示标准对话

1,showConfirmDialog():显示确认对话框, 向用户提出
问题, 然后由用户自己来确认 (按, Yes”或, No”按钮 )。
2,showInputDialog():显示输入文本对话框, 提示用户
输入文本 。
3,showMessageDialog():显示消息对话框 。
4,showOptionDialog():显示选择性的对话框
4.2.1 对话框
示例 4.2.1 显示一个确认对话框,核心代码如下,
JOptionPane.showConfirmDialog(null,"choose one",
"choose one",JOptionPane.YES_NO_OPTION);
运行结果如下图,
4.2.1 对话框
示例 4.2.2 显示一个输入文本对话框,核心代码如下,
String strInputValue = JOptionPane.showInputDialog("Please input a value");
运行结果如下图,
4.2.1 对话框
示例 4.2.3 显示一个消息对话框,核心代码如下,
JOptionPane.showMessageDialog(null,"alert","alert",
JOptionPane.ERROR_MESSAGE);
运行结果如下图,
4.2.1 对话框
示例 4.2.4 显示一个选择性的对话框,核心代码如下,
Object[] options = { "OK","CANCEL" };
JOptionPane.showOptionDialog(null,"Click OK to continue","Warning",
JOptionPane.DEFAULT_OPTION,JOptionPane.WARNING_MESSAGE,null,
options,options[1]);
运行结果如下图,
4.2.1 对话框
练习 4.2.1 请使用
JOptionPane.showOptionDialog()方法创建一
个标准对话框,要求显示效果如下图,
4.2.1 对话框
? 自定义对话框
在 Swing中,JDialog类用于制作自定义对话框。和 JFrame一样,JDialog
也是一个顶层容器。 Javax.swing,JDialog类的常用方法有,
JDialog(Dialog owner,String title)
JDialog(Dialog owner,String title,boolean modal)
JDialog(Frame owner,String title)
JDialog(Frame owner,String title,boolean modal)
add(Component comp)
void setSize(int width,int height)
void setBounds(int x,int y,int width,int height)
4.2.1 对话框
示例 4.2.5 创建一个对话框, 提醒用户输入登陆 ID
和密码 。
4.2.2 菜单
菜单是图形用户界面的重要组成部分,是由菜单条 (Menu
Bar)、菜单 (Menu)、菜单项 (Menu Item)等组件组成。一个菜
单的实例如下图所示。





菜单项
菜单项上的
图标
单选菜单项
复 选菜单项
展开的
子菜单
分隔条
4.2.2 菜单
? JMenuBar
菜单栏是菜单的容器, 菜单必须添加到菜单栏中 。 在 Swing
中, JMenuBar类用于实现菜单栏 。 可以用 setJMenuBar()方
法将一个菜单栏设置到容器中, 但前提条件是该容器必须
支持 setJMenuBar()方法 。 Javax.swing,JMenuBar类的常用方
法有,
JMenuBar()
JMenu getMenu(int index)
JMenu add(JMenu c)
int getMenuCount()
4.2.2 菜单
? JMenu
菜单包含多个菜单项, 并且菜单可以添加到菜
单栏中, 或作为子菜单添加到其它菜单中 。 在
单击某个菜单时, 该菜单就会展开并显示菜单
项的列表 。 在 Swing中, JMenu类用于实现菜单 。
Javax.swing,
4.2.2 菜单
Javax.swing,JMenu类的常用方法有,
? JMenu(String s)
? JMenuitem add(JMenuItem menuItem)
? Component add(Component c,int index)
? void addSeparator()
? JMenuItem getItem(int pos)
? int getItemCount()
? Component getMenuComponent(int n)
? JMenuItem insert(JMenuItem mi,int pos)
? void insertSeparator(int index)
? void remove(JMenuItem item)
4.2.2 菜单
? JMenuItem
菜单项是菜单中的一个 GUI组件, 在选定它时, 会产生
一个动作事件 (action event)。 菜单项可以用于启动某个
动作, 或作为一个为用户提供更多菜单选项的子菜单 。
在 Swing中, JMenuItem类用于实现菜单 。 Javax.swing,
JMenuItem类的常用方法有,
JMenuItem(String text)
JMenuItem(String text,int mnemonic)
void setEnabled(boolean b)
4.2.2 菜单
? JCheckBoxMenuItem
复选框菜单项类似于复选框,在一组相关的复选框菜单项中,用户可选
择其中的一个或多个,它们之间并不排斥。在 Swing中,
JCheckBoxMenuItem类用于实现复选框菜单项,它是 JMenuItem类的子
类。在选中某个 JCheckBoxMenuItem时,会在该菜单项的左侧显示一个
,√, 记号,当再次选中该菜单项时,其左侧的, √, 记号会消失。
Javax.swing,JCheckBoxMenuItem类的常用方法有,
JCheckBoxMenuItem(String text)
JCheckBoxMenuItem(String text,boolean selected)
boolean getState()
4.2.2 菜单
? JRadioButtonMenuItem
单选菜单项类似于单选按钮, 在一组相关的单选菜单项中, 用户在同一
时刻只能选择其中的一个, 即 它 们 是 互 斥 的 。 在 Swing 中,
JRadioButtonMenuItem类用于实现单选菜单项, 和 JCheckBoxMenuItem
类一样, 它也是 JMenuItem 类 的 子 类 。 在 选 中 某 个
JRadioButtonMenuItem时, 会在该菜单项的左侧显示一个填充的圆形;
在选中另一个 JRadioButtonMenuItem时, 会清除以前选中的菜单项左侧
的填充圆 。 Javax.swing,JRadioButtonMenuItem类的常用方法有,
JRadioButtonMenuItem (String text)
JRadioButtonMenuItem (String text,boolean selected)
任务解决
? 通过对菜单相关知识的学习,我们应该初步具
备了解决任务 1的能力。
小结
一, 对话框
对话框是 GUI中很常见的窗口对象, 应用十分广泛 。 对话框必须依附于某个窗
口并由这个窗口负责弹出, 如果该窗口关闭了, 对话框也随着关闭 。 对话框有
模式对话框 (modal dialog)和非模式对话框 (non-modal dialog)两种 。 模式对话框
与非模式对话框的区别是:当模式对话框弹出时, 只有关闭此对话框才能继续
进行其它窗口的操作;非模式对话框弹出时, 即使不关闭, 也可以对后面的的
窗口进行操作 。 在 Swing中, 用户可以使用 JOptionPane类提供的方法来生成各
种标准的对话框, 也使用 JDialog类根据实际需要生成自定义对话框 。
二, 菜单
菜单是图形用户界面的重要组成部分,是由菜单条 (Menu Bar)、菜单 (Menu)、
菜单项 (Menu Item)等组件组成。菜单的设计思路就是一个菜单组装的过程:把
菜单添加到菜单条上,把菜单项添加到菜单中。普通菜单项的显示内容可以是
文字、图标或文字加图标。此外,菜单项还可以是单选框和复选框。在 Swing
中,菜单条由 JMenuBar类实现,菜单由 JMenu类实现,菜单项由 JMenuItem实现,
单选框菜单项由 JRadioButtonMenuItem实现,复选框菜单项由
JCheckBoxMenuItem实现。