主窗体有一系列菜单,点击一个菜单弹出一个JFrame对象,在此窗体内嵌入一个webbrowser,如果将JFrame设置为DISPOSE_ON_CLOSE后主窗体的菜单失灵都不能点击;如果将JFrame关闭设置为setVisible(false),则点击菜单重新打开JFrame对象,浏览器内容不能正常显示求助!!!

解决方案 »

  1.   

    在mainframe.java里菜单点击事件   
    private void jMenuItem_RouteMapActionPerformed(java.awt.event.ActionEvent evt) {                                                   
            // TODO add your handling code here:
              JFrame frm_RouteMap =  new RouteMap("RouteMap");
              frm_RouteMap.setVisible(true);
              
        } 
    在RouteMap.java里:
    public class RouteMap extends JFrame{
        private WebBrowser webBrowser;
        private final String url= "http://localhost:8080/XXXX/RealMap.jsp";
        public RouteMap(String name) {
            super(name);
            initializeMapFrame();
      //      this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);这句注释掉就是再次点击菜单浏览器没有任何显示,要是增加了就是窗体关闭了其它菜单项不能点击了
        }
        private void initializeMapFrame() {
            webBrowser = new WebBrowser();
            try{
                    webBrowser.setURL(new URL(url));
                }catch(MalformedURLException e){
                        return;
                }
            this.add(webBrowser, BorderLayout.CENTER);
            this.pack();  
            this.setExtendedState(JFrame.MAXIMIZED_BOTH);
     }    
    }
      

  2.   

    在mainframe.java里菜单点击事件   
    private void jMenuItem_RouteMapActionPerformed(java.awt.event.ActionEvent evt) {                                                   
            // TODO add your handling code here:
              JFrame frm_RouteMap =  new RouteMap("RouteMap");
              frm_RouteMap.setVisible(true);
              
        } 
    在RouteMap.java里:
    public class RouteMap extends JFrame{
        private WebBrowser webBrowser;
        private final String url= "http://localhost:8080/XXXX/RealMap.jsp";
        public RouteMap(String name) {
            super(name);
            initializeMapFrame();
      //      this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);这句注释掉就是再次点击菜单浏览器没有任何显示,要是增加了就是窗体关闭了其它菜单项不能点击了
        }
        private void initializeMapFrame() {
            webBrowser = new WebBrowser();
            try{
                    webBrowser.setURL(new URL(url));
                }catch(MalformedURLException e){
                        return;
                }
            this.add(webBrowser, BorderLayout.CENTER);
            this.pack();  
            this.setExtendedState(JFrame.MAXIMIZED_BOTH);
     }    
    }
    EventQueue.invokeLater(new Runnable() {
    public void run() {
    try {
    //LoginWindow window = new LoginWindow();
    //window.frame.setVisible(true);
                                            JFrame frm_RouteMap =  new RouteMap("RouteMap");
                                             frm_RouteMap.setVisible(true);
    } catch (Exception e) {
    log.error("new RouteMap error", e);
    }
    }
    });
      

  3.   

    在mainframe.java里菜单点击事件   
    private void jMenuItem_RouteMapActionPerformed(java.awt.event.ActionEvent evt) {                                                   
            // TODO add your handling code here:
              JFrame frm_RouteMap =  new RouteMap("RouteMap");
              frm_RouteMap.setVisible(true);
              
        } 
    在RouteMap.java里:
    public class RouteMap extends JFrame{
        private WebBrowser webBrowser;
        private final String url= "http://localhost:8080/XXXX/RealMap.jsp";
        public RouteMap(String name) {
            super(name);
            initializeMapFrame();
      //      this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);这句注释掉就是再次点击菜单浏览器没有任何显示,要是增加了就是窗体关闭了其它菜单项不能点击了
        }
        private void initializeMapFrame() {
            webBrowser = new WebBrowser();
            try{
                    webBrowser.setURL(new URL(url));
                }catch(MalformedURLException e){
                        return;
                }
            this.add(webBrowser, BorderLayout.CENTER);
            this.pack();  
            this.setExtendedState(JFrame.MAXIMIZED_BOTH);
     }    
    }
    EventQueue.invokeLater(new Runnable() {
    public void run() {
    try {
    //LoginWindow window = new LoginWindow();
    //window.frame.setVisible(true);
                                            JFrame frm_RouteMap =  new RouteMap("RouteMap");
                                             frm_RouteMap.setVisible(true);
    } catch (Exception e) {
    log.error("new RouteMap error", e);
    }
    }
    });
    没有异常抛出。