需要动作事件按钮的GUI java程序

时间:2011-08-17 09:51:25

标签: java swing user-interface actionlistener jmenu

我正在创建一个代表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);
        }

}

5 个答案:

答案 0 :(得分:4)

另请考虑使用Action让组件共享功能,如here所示。

答案 1 :(得分:3)

menu selection上拨打System.exit(0)就行了。

答案 2 :(得分:2)

目前你刚刚创建了GUI元素,但它们基本上都是空壳。特别是,您已创建菜单上显示的项目,但您尚未向这些项目添加任何行为。 (由于您没有告诉您的程序在点击某个项目时该怎么做,您认为会发生什么?)

为了提供此行为,您需要注册一个ActionListener,当某些在某个元素上发生时,将会调用该System.exit(0),并允许您在这一点(例如调用{{1}}。有关详细信息,请参阅Writing [Swing] Event listeners上的教程。

答案 3 :(得分: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());

关闭按钮现在每次按下时都会关闭你的应用程序。

答案 4 :(得分:2)

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

编辑:

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
...
// JMenuItem menuitem8 = new JMenuItem("Exit");
JMenuItem menuitem8 = new JMenuItem( new ExitAction() );