2016-02-15 47 views
0

我为jxbrowser 6.0实现了弹出式处理程序。jxbrowser中的弹出式关闭事件

是否有任何方式让弹出窗口向主浏览器发送(事件)它(弹出窗口)已关闭?

主浏览器必须暂停此活动,直到打开的弹出窗口关闭。

回答

0

要了解,当弹出被关闭用下面的办法:

browser.setPopupHandler(new PopupHandler() { 
    public PopupContainer handlePopup(PopupParams params) { 
     return new PopupContainer() { 
      public void insertBrowser(final Browser browser, final Rectangle initialBounds) { 
       SwingUtilities.invokeLater(new Runnable() { 
        @Override 
        public void run() { 
         BrowserView popupView = new BrowserView(browser); 
         popupView.setPreferredSize(initialBounds.getSize()); 

         final JFrame popupFrame = new JFrame("Popup"); 
         popupFrame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); 
         popupFrame.add(popupView, BorderLayout.CENTER); 
         popupFrame.pack(); 
         popupFrame.setLocation(initialBounds.getLocation()); 
         popupFrame.setVisible(true); 
         popupFrame.addWindowListener(new WindowAdapter() { 
          @Override 
          public void windowClosing(WindowEvent e) { 
           browser.dispose(); 
          } 
         }); 

         browser.addDisposeListener(new DisposeListener<Browser>() { 
          public void onDisposed(DisposeEvent<Browser> event) { 
           popupFrame.setVisible(false); 
           // Notify parent that popup has been closed. 
          } 
         }); 
        } 
       }); 
      } 
     }; 
    } 
}); 
+0

感谢您的回答, 在父浏览器是什么监控弹出关闭的代码? 谢谢弗拉基米尔。 – user1865724

+0

我已经提供了这个代码。 “浏览器”实例是父浏览器实例。 – Vladimir

0

我已经发现布尔变量正在运行的解决方案,但我想应该更优雅的一个。

  browser.addDisposeListener(new DisposeListener() { 
       public void onDisposed(DisposeEvent event) { 
        finestraAComparsa.setVisible(false); 
        Automazione.finestraAComparsaChiusa = true;// 
        // Notify parent that popup has been closed. 
       } 
      }); 

在主浏览器类文件:

   try { 
        while (!finestraAComparsaChiusa) { 
         Thread.sleep(1000); 
        } 
        finestraAComparsaChiusa = false; 
       } catch (InterruptedException ex) { 
        ex.printStackTrace(); 
       }