把出问题的那个函数剪切出来,年贴到mywin(也就是你的frame)中,就行了。

解决方案 »

  1.   

    应该是:
    import java.awt.*;
    public class Menutest
    {   myWin w=new myWin();
        public static void main(String[] args)
        {
            w.resize(400,300);
            w.show();
        }
        public boolean action(Event e,Object lb)
        {
            if (e.target instanceof MenuItem)
            {
                if (((String)lb).equals("退出"))
                {
                    w.dispose();
                    System.exit(0);
                }
            }
            return true;
        }
    }class myWin extends Frame
    {
        public myWin()
        {
            super("测试菜单");
            FileMenu fileMenu=new FileMenu();
            HelpMenu helpMenu=new HelpMenu();
            MenuBar mb=new MenuBar();
            mb.setHelpMenu(helpMenu);
            mb.add(fileMenu);
            mb.add(helpMenu);
            setMenuBar(mb);
        }
    }class FileMenu extends Menu
    {
        public FileMenu()
        {
            super("文件",true);
             add(new MenuItem("打开"));
             add(new MenuItem("关闭"));
             add(new MenuItem("退出"));
        }
    }class HelpMenu extends Menu
    {
        public HelpMenu()
        {
            super("帮助");
             add(new MenuItem("关于 测试菜单"));
             add(new MenuItem("类结构"));
             addSeparator();
             add(new CheckboxMenuItem("Balloon 帮助"));
             Menu subMenu=new Menu("目录");
             subMenu.add(new MenuItem("一点帮助"));
             subMenu.add(new MenuItem("一堆帮助"));
             add(subMenu);
        }
    }
      

  2.   

    贴到mywin里是没有提示出错了,但我按退出,也没有反应呀
      

  3.   

    第二种方法也试了,
    把myWin w=new myWin();挪到外面后,要在前面加上static,要么提示出错。
    可结果和前面一样,编译也通过了,但是退出仍然没反应.
        
      

  4.   

    dispose()是frame的方法;Menutest里没有.
    修改过的代码:
    import java.awt.*;
    import java.awt.event.*;
    public class Menutest
    {
        public static void main(String[] args)
        {
            myWin w=new myWin();
            w.resize(400,300);
            w.show();
        }
        public boolean action(Event e,Object lb)
        {
            if (e.target instanceof MenuItem)
            {
                if (((String)lb).equals("退出"))
                {
                    //dispose();
                    System.exit(0);
                }
            }
            return true;
        }
    }class myWin extends Frame
    {
        public myWin()
        {
            super("测试菜单");
            FileMenu fileMenu=new FileMenu();
            HelpMenu helpMenu=new HelpMenu();        MenuBar mb=new MenuBar();
            mb.setHelpMenu(helpMenu);
            mb.add(fileMenu);
            mb.add(helpMenu);
            setMenuBar(mb);
        }
    }class FileMenu extends Menu
    {
        public FileMenu()
        {
            super("文件",true);
             add(new MenuItem("打开"));
             add(new MenuItem("关闭"));
             add(new MenuItem("退出"));
             this.addActionListener (new java.awt.event.ActionListener() {
          public void actionPerformed(ActionEvent e) {
            System.exit (0);;
          }
        });
        }
    }class HelpMenu extends Menu
    {
        public HelpMenu()
        {
            super("帮助");
             add(new MenuItem("关于 测试菜单"));
             add(new MenuItem("类结构"));
             addSeparator();
             add(new CheckboxMenuItem("Balloon 帮助"));
             Menu subMenu=new Menu("目录");
             subMenu.add(new MenuItem("一点帮助"));
             subMenu.add(new MenuItem("一堆帮助"));
             add(subMenu);
        }
    }
      

  5.   

    to vampirelord
    我是贴到
    class myWin extends Frame
    {
        public myWin()
        {
          dispose();
        }
    }
    里面的。
      

  6.   

    错:
    应该是
    class myWin extends Frame{
        public myWin(){
        }
        public boolean action(Event e,Object lb)
        {
            if (e.target instanceof MenuItem)
            {
                if (((String)lb).equals("退出"))
                {
                    dispose();
                    System.exit(0);
                }
            }
            return true;
        }
    }
      

  7.   

    to vampirelord
    成功了。
    我把控件的action交给Frame实现,所以对action的定义要写在Frame 里面是吧?
      

  8.   

    控件和frame的从属关系弄清楚就行了。
    你这个例子代码结构不太好,不要再一个文件里写许多class。当然用来学习就无所谓乐。