在SWING中加了一个浏览器,现在想遍历一些网址提取内容,部分代码如下:
for(int i = 0;i < url.length(); i++){
    Browser.webBrowser.setURL(new URL("url[i]));
    //Browser.statusBar.lblStatus这个是浏览器的状态栏
    while(!Browser.statusBar.lblStatus.getText().equals("Document loading completed.")){
       
    }
    content = Browser.webBrowser.getContent();//提取内容
}
可是这样无法得到内容,CPU还一直占用100%,到底怎样才能在网页内容全部下载完毕后提取内容啊,是不是要开2个线程啊,各位高手帮帮忙啊,谢谢!分不够再给...头疼中..........

解决方案 »

  1.   

    添加一个addWebBrowserListener监听,需要内容download完成以后,downloadCompleted会回调,这时才能使用getContent();获取,否则为空
     webBrowser.addWebBrowserListener(new WebBrowserListener() {
                public void downloadStarted(WebBrowserEvent event) {
                    updateStatusInfo("Loading started.");
                }            public void downloadCompleted(WebBrowserEvent event) {
                    jBackButton.setEnabled(webBrowser.isBackEnabled());
                    jForwardButton.setEnabled(webBrowser.isForwardEnabled());                updateStatusInfo("Loading completed.");                URL currentUrl = webBrowser.getURL();                if (currentUrl != null) {
                        jAddressTextField.setText(currentUrl.toString());
                    }
                }
    。。
      

  2.   

    再问:
    webBrowser.addWebBrowserListener(new WebBrowserListener() {
                public void downloadCompleted(WebBrowserEvent event) {
                    jBackButton.setEnabled(webBrowser.isBackEnabled());
                    jForwardButton.setEnabled(webBrowser.isForwardEnabled());                updateStatusInfo("Loading completed.");                URL currentUrl = webBrowser.getURL();                if (currentUrl != null) {
                        jAddressTextField.setText(currentUrl.toString());
                    }
                }            public void documentCompleted(WebBrowserEvent event) {
                    updateStatusInfo("Document loading completed.");                                
                }
                //上面的downloadCompleted()和下面的documentCompleted()方法一个是在下载操作完成、中断或失败时调用,另一个是在文档加载完成时调用。它们的先后顺序是怎样的呢?是不是先download页面内容后然后在加载页面内容?!那我是不是可以直接在downloadCompleted()方法里得到webBrowser.getContent()呢? 
      

  3.   

    楼主这个问题解决了吗??我的代码跑到Browser.webBrowser.setURL(new URL("url[i]));
    的时候一直在运行,没法往下跑,请问有什么办法解决吗?