第十一章 Swing II
回顾 Java 基础类扩展了抽象窗口工具包 (AWT),并包含称作 Swing 组件的改进用户界面 容器对象是能够容纳其他 Swing 组件的一种组件。容器负责对它包含的组件进行布局。常用的容器有 JFrame、 JPanel 和 JScrollPane 组件可置于用户界面上,并可使其显示或改变大小。常用的组件有 JLabel、 JTextField、 JTextArea、JButton、JCheckBox、JRadioButton 和 JComboBox 要处理事件,可使用事件处理程序,以执行所需操作 标准事件适配器或匿名内部类适配器可用于处理事件 布局管理器可在容器中自动定位组件
本章目标 掌握菜单设计 运用各种对话框
菜单 2-1 显示一个项目列表,指明用户可以执行的各项操作 菜单 子菜单 文件 编辑 格式 帮助 字体 段落 项目符号和编号 背景色 红色 绿色 黑色
JRadioButtonMenuItem 菜单 2-2 Object Component Container JComponent JMenuBar JSeparator AbstractButton JPopupMenu JMenu JCheckboxMenuItem JRadioButtonMenuItem JMenuItem 包含 javax.swing 包的菜单类的类层次结构
JMenuBar 类 2-1 只要选中 JMenuItem,就会产生通过重写 actionPerformed()方法进行处理的 ActionEvent JMenuBar 文件 编辑 格式 帮助 新建 打开 关闭 JMenuItem JMenu
SingleSelectionModel JMenuBar 类 2-2 JMenubar 类 SingleSelectionModel 跟踪当前选定的菜单
JRadioButtonMenuItem JMenu 类 2-1 JMenu 组件有两个用途 当它添加至 JMenuBar 时,将显示为文本字符串 当用户单击此菜单项时,则显示一个弹出式菜单 JCheckBoxMenuItem JMenuItem JMenu JSeparator JRadioButtonMenuItem
JMenu 类 2-2 JMenu 类 JPopupMenu 当用户单击 JMenu 时, 显示 JMenu 的菜单项
JMenuItem 类 2-1 只要将组件拖放至应用程序,就会在该应用程序内创建一个相应的类 在应用程序中创建菜单时,各个类的代码将在“Source”选项卡中自动生成 JMenuItem 组件通常是 JMenu 或 JPopupMenu 中选项的标题 在 JMenuItem 中除了可以添加字符串外,还可添加图标 文件 新建 演示:示例 1
JMenuItem 类 2-2 mnuFormat.setText(“格式"); import java.awt.Dimension; mnuNew.setText(“新建"); mnuOpen.setText(“打开..."); mnuSave.setText(“保存"); mnuSaveAs.setText(“另存为..."); mnuExit.setText(“退出"); mnuHelp.setText(“帮助"); mnuNotepad.add(mnuFile); mnuNotepad.add(mnuEdit); mnuNotepad.add(mnuFormat); mnuNotepad.add(mnuHelp); mnuFile.add(mnuNew); mnuFile.add(mnuOpen); mnuFile.add(mnuSave); mnuFile.add(mnuSaveAs); mnuFile.add(mnuExit); } import java.awt.Dimension; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JMenuBar; import javax.swing.JMenu; import javax.swing.JMenuItem; public class MenuFrame extends JFrame { JPanel contentPane; JMenuBar mnuNotepad = new JMenuBar(); JMenu mnuFile = new JMenu(); JMenu mnuEdit = new JMenu(); JMenu mnuFormat = new JMenu(); JMenuItem mnuNew = new JMenuItem(); JMenuItem mnuOpen = new JMenuItem(); JMenuItem mnuSave = new JMenuItem(); JMenuItem mnuSaveAs = new JMenuItem(); JMenuItem mnuExit = new JMenuItem(); JMenu mnuHelp = new JMenu(); public MenuFrame() { try { setDefaultCloseOperation(EXIT_ON_CLOSE); jbInit(); } catch (Exception exception) { exception.printStackTrace(); } private void jbInit() throws Exception { contentPane = (JPanel) getContentPane(); contentPane.setLayout(null); this.setJMenuBar(mnuNotepad); setSize(new Dimension(400, 300)); setTitle(“菜单"); mnuFile.setText(“文件"); mnuEdit.setText(“编辑");
JPopupMenu 类 2-1 用于显示展开形式的菜单 可显示在屏幕的任何地方 通常是由单击鼠标右键触发的 激活弹出式菜单项之一所执行的操作总是依赖于上下文 可供 JPopupMenu 类使用的方法
JPopupMenu 类 2-2 方法 说明 public JMenuItem add(JMenuItem menuItem) 将指定菜单项添加至菜单末尾 public JMenuItem add(Strings) 使用指定文本新建菜单项,并将其添加至菜单末尾 public void show(Component c, int x, int y) 在组件“c”的坐标空间的 (x, y) 位置显示弹出式菜单 public Boolean isPopupTrigger() 确定是否将鼠标事件看作是当前平台的弹出触发器
JCheckBoxMenuItem类 这个类是 JMenuItem 类的子类 使用这个类可实现复选框,默认情况下可为其分配选定标记或取消选定标记 文件 编辑 视图 帮助 正常 幻灯片浏览 工具栏 标准 格式 绘图
JRadioButtonMenuItem类 在同一时刻只能选择一个菜单项 文件 编辑 格式 帮助 字体 段落 项目符号和编号 背景色 粗体 斜体 常规
对话框 6-1 Java 中的对话框是一个容器,它充当父容器的子容器 JOptionPane 这个类支持的功能有: “错误”对话框 布局标准对话框 指定对话框的标题和文本 提供图标和自定义按钮文本 JOptionPane 可用于显示各种图标,如用于警告消息、问题、错误和信息等的图标 “错误”对话框 “问题”对话框 “消息”对话框
对话框 6-2 以下是一些可供 JOptionPane 类使用的构造方法: JOptionPane() JOptionPane(Object message) JOptionPane(Object message, int messageType) JOptionPane(Object message, int messageType, int optionType) JOptionPane(Object message, int messageType, int optionType, Icon icon)
对话框 6-3 JOptionPane 类的 showXxxDialog 方法是显示模式对话框最常用的方法 showXxxDialog showMessageDialog() showOptionDialog()
对话框 6-4 Method Description int showOptionDialog(Component parentComponent, Object message, String title, int optionType, int messageType, Icon icon, Object[] options, Object initialValue) 此方法显示具有指定图标的对话框,其中初始选项由 initialValue 参数决定,而选项的数目由 optionType 参数决定 Methods Description void showMessageDialog(Component parentComponent, Object message) 此方法显示一则消息,即标题为“消息”的对话框。 void showMessageDialog(Component parentComponent, Object message, String title, int messageType) 此方法显示使用由 messageType 参数确定的默认图标来显示信息的对话框 void showMessageDialog(Component parentComponent, Object message, String title, int messageType, Icon icon) 此方法显示用于显示消息和指定所有参数的对话框
对话框 6-5 用于验证用户身份和显示相应消息的代码 验证用户身份的应用程序 向工程中添加标题为“User_Login”的应用程序 将 JOptionPane 拖放至该应用程序 该应用程序将验证用户身份并显示相应消息
对话框 6-6 演示:示例 2 public void btnOk_actionPerformed(ActionEvent e) { String user; String password; user = txtUserName.getText(); password = txtPassword.getText(); if (user.equals("admin") && password.equals("aptech")) { dlgMessage.showMessageDialog(this,"您是授权用户","经验证的用户",JOptionPane.INFORMATION_MESSAGE); } else dlgMessage.showMessageDialog(this,"非法用户名或密码 ","非法用户",JOptionPane.ERROR_MESSAGE); txtUserName.setText(""); txtPassword.setText(""); txtUserName.setFocusable(true); } 演示:示例 2
菜单的事件处理 演示:示例 3
对话框的事件处理 演示:示例 4
总结 Swing 菜单由 JMenubar、JMenuItem 和 JMenu 组成 AbstractButton 是 JMenu 类的父类 与 JMenuItem 及其与菜单栏关联的子类不同,JPopupMenu 可显示在屏幕的任何地方 JCheckBoxMenuItem 和 JRadioButtonMenuItem 用于实现菜单栏中的复选框和单选按钮 JOptionPane 类用于显示对话框