不使用MW.show();的话就只生成一个主窗口,但理论上说那个空白窗口还是存在的,只是看不到而已,使用show();绘制出了所有的组件,到底是哪条语句生成的空白窗口

解决方案 »

  1.   

    有没有不使用Frame,而直接生成窗口,添加菜单的办法
      

  2.   

    是这条Frame f=new Frame("锦江工业开发区文件管理系统");把他删除,在构造函数里添加super("锦江工业开发区文件管理系统");
    f.setMenuBar(MB);
    f.resize(600,400);
    f.setVisible(true);
    这部分把前面的f去掉就行了。
    你试试,应该ok了
      

  3.   

    在MainWindows的构造函数中,你又new了一个frame,当然,在改f对象上,
    你放上了许多组建。
    而当你在main中new出MainWindows时,同时构造了两个窗口,一个显然
    是f,而另外一个则是真正的MainWindows对象(就是那个很小的窗口,因为
    你没有设置它的大小,所以默认是最小的)。同时你的程序不能关闭,对吧?以下是我改好的代码,我觉得一般你不要在
    那个MainWindows的构造函数中再构造一个Frame对象,这样你的父类就有点
    失去意义了。然后setVisible最好也不要放在构造函数中,而是构造出对象
    后再显示。以下代码也加入了关闭程序的监听器。import java.awt.*;
    import java.awt.event.*;
    //import javax.swing.*;
    //import javax.swing.event.*;class MainWindows extends Frame{ MenuBar MB;//=new MenuBar();//主菜单 Menu m1,//=new Menu("收文管理"),
      m2,//=new Menu("发文管理"),
      m3,//=new Menu("文件查询"),
      m4,//=new Menu("公文销毁"),
      m5,//=new Menu("系统维护"),
      HelpMenu;//=new Menu("帮助"); public MainWindows(){// 构造函数 setTitle("锦江工业开发区文件管理系统");
    MB=new MenuBar();//主菜单
    m1=new Menu("收文管理");
    m2=new Menu("发文管理");
    m3=new Menu("文件查询");
    m4=new Menu("公文销毁");
    m5=new Menu("系统维护");
    HelpMenu=new Menu("帮助");//-------------收文管理--------------------------------------- String[] CF_MenuItem={"来文登记","领导阅批及下发","督办处理","公文归档"};

    for(int i=0;i<CF_MenuItem.length;i++){
    m1.add(new MenuItem(CF_MenuItem[i]));
    if((i+1)%2==0)
    m1.addSeparator();
    }


    //--------------发文管理---------------------------------------

    String[] GF_MenuItem={"文件拟稿","审稿与审核","文件发行","文件归档"};

    for(int i=0;i<GF_MenuItem.length;i++){
    m2.add(new MenuItem(GF_MenuItem[i]));
    if((i+1)%2==0)
    m2.addSeparator();
    }



    //--------------------文件查询---------------------------------

    String[] FM_MenuItem={"来文信息查询","发文信息查询"};

    for(int i=0;i<FM_MenuItem.length;i++){
    m3.add(new MenuItem(FM_MenuItem[i]));
    }


    //--------------------公文销毁----------------------------------

    String[] FD_MenuItem={"文件销毁","销毁记录查询"};

    for(int i=0;i<FD_MenuItem.length;i++){
    m4.add(new MenuItem(FD_MenuItem[i]));
    }


    //---------------------系统维护-----------------------------------

    String[] SM_MenuItem={"单位名称设置","打印机设置","操作人员设置","类别维护设置","数据处理"};

    for(int i=0;i<SM_MenuItem.length;i++){
    m5.add(new MenuItem(SM_MenuItem[i]));
    if((i+1)%2==0)
    m5.addSeparator();
    }


    //----------------帮助---------------------------------------

    String[] HP_MenuItem={"系统帮助","软件注册","关于软件","退出系统"};

    for(int i=0;i<HP_MenuItem.length;i++){
    HelpMenu.add(new MenuItem(HP_MenuItem[i]));
    if((i+1)%2==0)
    HelpMenu.addSeparator();
    }

    //-----------------------------------------------------------

    MB.add(m1);
    MB.add(m2);
    MB.add(m3);
    MB.add(m4);
    MB.add(m5);
    MB.add(HelpMenu);
    MB.setHelpMenu(HelpMenu);
    //MainFrame.addWindowListener(new KillWindows());
    addWindowListener(new WindowAdapter()
    {
    public void windowClosing(WindowEvent ee)
    {
    System.exit(0);
    }
    });

    setMenuBar(MB);
    setSize(600,400);
    setLocation(150,100);
    //setVisible(true); }
    //------------------------------------------------------------
                                                                          public static void main(String args[])
    {
    MainWindows MW=new MainWindows();
                      MW.setVisible(true);
    }
    }
      

  4.   

    谢谢各位的热心帮助,我最后把程序改成这个样子了,可以编释、运行
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.event.*;class MainWindows extends JFrame{
    MenuBar MB=new MenuBar();//主菜单Menu m1,
      m2,
      m3,
      m4,
      m5,
      HelpMenu;public MainWindows(){
    super("锦江工业开发区文件管理系统"); m1=new Menu("收文管理");
    m2=new Menu("发文管理");
    m3=new Menu("文件查询");
    m4=new Menu("公文销毁");
    m5=new Menu("系统维护");
    HelpMenu=new Menu("帮助");
    //-------------收文管理---------------------------------------MenuItem[] CF_MenuItem={new MenuItem("来文登记"),
            new MenuItem("领导阅批及下发"),
            new MenuItem("督办处理"),
            new MenuItem("公文归档")};
    for(int i=0;i<CF_MenuItem.length;i++){
    m1.add(CF_MenuItem[i]);
    if((i+1)%2==0)
    m1.addSeparator();
    }
    CF_MenuItem[0].addActionListener(new CMIL());//--------------发文管理---------------------------------------MenuItem[] GF_MenuItem={new MenuItem("文件拟稿"),
    new MenuItem("审稿与审核"),
    new MenuItem("文件发行"),
    new MenuItem("文件归档")};


    for(int i=0;i<GF_MenuItem.length;i++){
    m2.add(GF_MenuItem[i]);if((i+1)%2==0)
    m2.addSeparator();}
    //--------------------文件查询---------------------------------MenuItem[] FM_MenuItem={new MenuItem("来文信息查询"),
    new MenuItem("发文信息查询")};
    for(int i=0;i<FM_MenuItem.length;i++){
    m3.add(FM_MenuItem[i]);
    }
    //--------------------公文销毁----------------------------------MenuItem[] FD_MenuItem={new MenuItem("文件销毁"),
    new MenuItem("销毁记录查询")};
    for(int i=0;i<FD_MenuItem.length;i++){
    m4.add(FD_MenuItem[i]);
    }
    //---------------------系统维护-----------------------------------MenuItem[] SM_MenuItem={new MenuItem("单位名称设置"),
    new MenuItem("打印机设置"),
    new MenuItem("操作人员设置"),
    new MenuItem("类别维护设置"),
    new MenuItem("数据处理")};
    for(int i=0;i<SM_MenuItem.length;++i){
    m5.add(SM_MenuItem[i]);
    if((i+1)%2==0)
    m5.addSeparator();
    }
    //----------------帮助---------------------------------------MenuItem[] HP_MenuItem={new MenuItem("系统帮助"),
    new MenuItem("软件注册"),
    new MenuItem("关于软件"),
    new MenuItem("退出系统")};
    for(int i=0;i<HP_MenuItem.length;i++){
    HelpMenu.add(HP_MenuItem[i]);
    if((i+1)%2==0)
    HelpMenu.addSeparator();
    }//-----------------------------------------------------------MB.add(m1);
    MB.add(m2);
    MB.add(m3);
    MB.add(m4);
    MB.add(m5);
    MB.add(HelpMenu);
    MB.setHelpMenu(HelpMenu);setMenuBar(MB);
    resize(600,400);
    setLocation(150,100);
    setVisible(true);}
    //------------------------------------------------------------
                                                                         public static void main(String args[])
    { MainWindows MW=new MainWindows();
    MW.addWindowListener(
    new WindowAdapter(){
    public void windowClosing(WindowEvent e){
    System.exit(0);
    }
    });
    MW.resize(800,600);
    MW.show();    }
    }//|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
    //=================ComeFile组件事件处理类===============================================
    //------------------------------------------------------------
    class CMIL implements ActionListener{
    public void actionPerformed(ActionEvent e){
    JFrame Fr_ComeFile=new JFrame("来文登记");
    Fr_ComeFile.setSize(600,400);
    Fr_ComeFile.setVisible(true);
    }
    }