3

我正在制作一个代表 Microsoft Word 菜单栏的简单 java 程序,并在文件菜单中添加一个退出按钮......它什么也不做。

我需要您的帮助来告诉我如何使退出按钮真正退出并关闭程序。

这是我的代码:

public class MicrosoftWordMenu {
        public static void main(String [] args)
        {
        JPanel panel = new JPanel();
        JFrame frame = new JFrame("Microsoft Word");
        JMenuBar bar = new JMenuBar();
        JMenu menu = new JMenu("File");
        JMenu menu1 = new JMenu("Edit");
        JMenu menu2 = new JMenu("View");
        JMenu menu3 = new JMenu("Insert");
        JMenu menu4 = new JMenu("Format");
        JMenu menu5 = new JMenu("Tools");
        JMenu menu6 = new JMenu("Table");
        JMenu menu7 = new JMenu("Window");
        JMenu menu8 = new JMenu("Help");

        frame.add(bar, BorderLayout.NORTH);
        frame.add(panel);

        bar.add(menu);
        bar.add(menu1);
        bar.add(menu2);
        bar.add(menu3);
        bar.add(menu4);
        bar.add(menu5);
        bar.add(menu6);
        bar.add(menu7);
        bar.add(menu8);

        JMenuItem menuitem = new JMenuItem("New...");
        JMenuItem menuitem1 = new JMenuItem("Open...");
        JMenuItem menuitem2 = new JMenuItem("Close");
        JMenuItem menuitem3 = new JMenuItem("Save");
        JMenuItem menuitem4 = new JMenuItem("Save as...");
        JMenuItem menuitem5 = new JMenuItem("Save as web page...");
        JMenuItem menuitem6 = new JMenuItem("Web page preview ");
        JMenuItem menuitem7 = new JMenuItem("Print ");
        JMenuItem menuitem8 = new JMenuItem("Exit");

        menu.add(menuitem);
        menu.add(menuitem1);
        menu.add(menuitem2);
        menu.add(menuitem3);
        menu.add(menuitem4);
        menu.add(menuitem5);
        menu.add(menuitem6);
        menu.add(menuitem7);
        menu.add(menuitem8);

        frame.setSize(600,100);
        frame.setVisible(true);
        }

}
4

5 回答 5

4

Also consider using Action to let components share functionality, as shown here.

于 2011-08-17T10:27:48.153 回答
3

调用菜单选择System.exit(0)就可以了。

于 2011-08-17T10:00:19.117 回答
2

目前您只是在创建 GUI 元素,但它们基本上是空壳。特别是,您已经创建了出现在菜单上的项目,但您没有向这些项目添加任何行为。(由于您没有告诉您的程序在任何地方单击某个项目时要做什么,您认为会发生什么)?

为了提供这种行为,您需要注册一个,当元素上发生某些ActionListener事情时将调用它,并让您在此时采取适当的操作(例如调用。请参阅有关编写 [Swing]的教程事件侦听器以获取详细信息。System.exit(0)

于 2011-08-17T10:02:42.160 回答
2

我总是扩展 AbstractAction 类(它实现了 ActionListener 接口),它允许你重用你的动作。通过扩展 AbstractAction,actionPerformed(ActionEvent e) 方法将在您单击按钮时被调用。

public class CloseAction extends AbstractAction {

  public CloseAction() {
    super("Close");
  }

  public actionPerformed(ActionEvent e) {
    System.exit(1);  
  }

}

现在,要将上述操作应用于您的一个按钮,您只需遵循以下代码。

CloseButton.setAction(new CloseAction());

关闭按钮现在将在每次按下时关闭您的应用程序。

于 2011-08-17T11:23:31.830 回答
2

使用关闭应用程序ExitAction中定义的。然后单击菜单项就像单击窗口右上角的关闭图标一样。这允许在关闭应用程序时保持一致性,以防您需要进行关闭处理。Exit

编辑:

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
...
// JMenuItem menuitem8 = new JMenuItem("Exit");
JMenuItem menuitem8 = new JMenuItem( new ExitAction() );
于 2011-08-17T21:15:13.910 回答