• 沒有找到結果。

设计菜单

在文檔中 程序设计大学教程 (頁 134-139)

第7章 程序设计案例分析

7.2 设计窗体

7.3.1 设计菜单

在 Java 程序中编写菜单程序是一件比较麻烦的事,需要写不少代码。通常需要手工创 建菜单项对象(JMenuItem 的实例)、菜单对象(JMenu 的实例)、菜单栏对象(JMenuBar 的实例)。然后把菜单项对象添加到菜单对象中;把菜单对象添加到菜单栏对象中。最后为 那个能使用菜单的容器组件添加完整的主菜单栏。凡是JFrame、JDialog、JApplet 及其派生 类都有一个 setJMenuBar 方法用于设置菜单栏。每个菜单项 JMenuItem 都有一个相关联的 ActionListener 用于监听和处理菜单点击事件。

使用NetBeans IDE 在窗体编辑器中可视化设计菜单,使得编写菜单程序颇为简单。具 体步骤如下:

首先在窗体编辑器中创建菜单栏

• 在“组件面板”窗口中,单击JMenuBa 或 MenuBa 组件。

• 在要添加菜单栏的JFrame、JDialog 或 JApplet 容器中单击任意位置。

如果这是添加到窗体中的第一个菜单栏,则该菜单栏在窗体上可见。如果这不是窗体的 第一个菜单栏,则菜单出现在“检查器”窗口中的“其他组件”节点下面,并且在窗体中不 显示该菜单栏。本案例程序中,我们用以上方法为主窗体MainForm 创建了一个菜单栏,命 名为menuBar,如图 7-10 所示。

然后将菜单添加到菜单栏中

• 在“检查器”窗口中右键单击该菜单栏,然后从上下文菜单中选择“添加JMenu”。

• 如果要命名新的菜单,请在“检查器”窗口中展开菜单栏节点,右键单击新创建的 菜单节点并选择“属性”。然后,为文本属性输入所需的名称。

本案例程序中,我们用以上方法为主窗体菜单栏创建了 2 个 JMenu 菜单,命名为 menuFile 和 menuView,如图 7-10 所示。

接着是添加菜单项

• 在“检查器”窗口中,右键单击要添加项目的菜单。

• 从上下文菜单中选择“添加”,然后从子菜单中选择一个项目。

如果要重命名新的菜单项,请在“检查器”窗口中展开菜单节点,右键单击新创建的菜 单项并选择“属性”。然后,为文本属性输入所需的名称。

本案例程序中,我们用以上方法为menuFile 菜单创建了 2 个 JMenuItem 菜单项,命名 为menuItemOpen 和 menuItemExit;为 menuView 菜单创建了 1 个 JMenuItem 菜单项,命名 为menuItemSetup,如图 7-10 所示。

图 7-10 为主界面设计菜单 最后为菜单项添加事件

• 在“检查器”窗口中选择菜单项。然后在“属性”窗口中单击“事件”按钮,并选 择所需的事件属性。

• 在“检查器”窗口或窗体编辑器中右键单击菜单项,然后从节点的上下文菜单中的

“事件”菜单中进行选择。

以本案例程序中的“退出”菜单项 menuItemExit 为例,我们在“检查器”窗口中选择 菜单项 menuItemExit。然后在“属性”窗口中单击“事件”按钮,为源组件 menuItemExit 选择事件actionPerformed,回车后系统自动生成的菜单事件处理代码如下:

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();//用户添加的代码

}

然后,我们就可以在事件处理程序中添加自己的代码。 1: package wordwinner;

2: import java.io.*;

3: import java.awt.*;

4: import javax.swing.*;

5: import java.util.*;

6:

7: public class MainForm extends javax.swing.JFrame { 8:

35: menuFile = new javax.swing.JMenu();

44: addWindowListener(new java.awt.event.WindowAdapter() {

45: public void windowClosing(java.awt.event.WindowEvent evt) {

51: menuItemOpen.setText("\u6253\u5f00");

52: menuItemOpen.addActionListener(new

61: menuItemExit.setText("\u9000\u51fa");

62: menuItemExit.addActionListener(new

74: menuItemSetup.setText("\u8bbe\u7f6e");

75: menuItemSetup.addActionListener(new 76: java.awt.event.ActionListener() {

77: public void actionPerformed(java.awt.event.ActionEvent evt) { 78: menuItemSetupActionPerformed(evt);

79: }

92: menuItemExitActionPerformed(java.awt.event.ActionEvent evt) { 93: //退出程序

94: exit();

95: } 96:

97: private void

98: formWindowClosing(java.awt.event.WindowEvent evt) { 99: //退出程序

100: exit();

101: } 102:

103: private void

104: menuItemSetupActionPerformed(java.awt.event.ActionEvent evt) { 105: // 功能设置

106: mainPanel.setup();

107: } 108:

109: private void

110: menuItemOpenActionPerformed(java.awt.event.ActionEvent evt) { 111: // 打开词库文件

112: mainPanel.open();

113: } 114:

115: public static void main(String args[]) { 116: try {

117: UIManager.setLookAndFeel(

118: "com.sun.java.swing.plaf.windows.WindowsLookAndFeel");

119: } catch (Exception e){

120: e.printStackTrace();

121: }

122: java.awt.EventQueue.invokeLater(new Runnable() {

123: public void run() {

129: private void exit(){

130: int selection=JOptionPane.showConfirmDialog(this,

131: "是否立即退出系统?","操作提示",JOptionPane.OK_CANCEL_OPTION, 132: JOptionPane.WARNING_MESSAGE); 138: private javax.swing.JMenuBar menuBar;

139: private javax.swing.JMenu menuFile;

140: private javax.swing.JMenuItem menuItemExit;

141: private javax.swing.JMenuItem menuItemOpen;

142: private javax.swing.JMenuItem menuItemSetup;

143: private javax.swing.JMenu menuView;

144: // 变量声明结束

145: private MainPanel mainPanel;//主面板 146:

在文檔中 程序设计大学教程 (頁 134-139)