以前也尝试过,不过都没有成功。今天又试了一次,终于成功了。
首先说明一下,在网上广为流传的例子是不能编译的。如果上网搜索 JDIC 浏览器 肯定能搜到这篇文章 http://azi.javaeye.com/blog/207182 不过这里的代码是不能用的。里面需要 org.jdesktop.jdic.browser.IWebBrowser 而如果你和我一样下载的是最新的0.9.5的话,那么把代码拷过去肯定是找不到类的。上网搜索一下,好像是说自从0.9以后,IWebBrowser 这个类就挪走了。具体弄哪去了,我也忘了,英文的网页,没仔细看,不小心关了,一时也搜不出来了。可见这个例子使用的应该是很早以前的JDIC。
下面说说怎么嵌入吧。其实非常简单。
首先去 https://jdic.dev.java.net/ 下载最新的JDIC 0.9.5,好像是去年更新的,看来这个项目也没啥活力了呀。
然后解压后,运行Browser.jar试试(怎么运行jar包?......)。不好使?运行startBrowser.cmd,一闪过去了?那是JAVA_HOME没配好,如果你的JAVA_HOME和我一样有空格必然C:/Program Files.... 那么还是修改一下startBrowser.cmd把%JAVA_HOME%用引号引起来吧-->"%JAVA_HOME%"。然后运行,如果出现
Can't execute the native embedded browser. Error message: CreateProcess: IeEmbed
.exe -port=1600 error=2
那么去 lib/windows/x86下把IeEmbed.exe考到和startBrowser.cmd一个地方吧,然后运行这个cmd文件应该就ok了。
在程序里嵌入:需要导入jdic.jar 另外还要把lib下的windows目录复制到河jdic.jar一个目录下
然后尝试这段代码吧:
这段代码是jdic的网站拷贝的,不过可能它在写的时候版本还不是最新的,所以少一个接口
public void statusTextChange(WebBrowserEvent event) {;} 呵呵,说明我们现在还可以监听状态栏文本变化这个事件了。
试试吧,good luck!嗯,还有就是把它默认的java.net的url改成baidu了,因为教育网上国外网站太慢了。
package test;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.URL;
import java.net.MalformedURLException;
import org.jdesktop.jdic.browser.*;
public class SimpleBrowser {
public static void main(String[] args) {
JFrame frame = new JFrame("JDIC API Demo - SimpleBrowser");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
WebBrowser webBrowser = new WebBrowser();
//Use below code to check the status of the navigation process,
//or register a listener for the notification events.
webBrowser.addWebBrowserListener(
new WebBrowserListener() {
public void downloadStarted(WebBrowserEvent event) {;}
public void downloadCompleted(WebBrowserEvent event) {;}
public void downloadProgress(WebBrowserEvent event) {;}
public void downloadError(WebBrowserEvent event) {;}
public void documentCompleted(WebBrowserEvent event) {;}
public void titleChange(WebBrowserEvent event) {;}
public void statusTextChange(WebBrowserEvent event) {;}
public void windowClose(WebBrowserEvent webBrowserEvent) {
}
});
try {
webBrowser.setURL(new URL("http://www.baidu.com"));
} catch (MalformedURLException e) {
System.out.println(e.getMessage());
return;
}
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
panel.setPreferredSize(new Dimension(700, 500));
panel.add(webBrowser, BorderLayout.CENTER);
frame.getContentPane().add(panel, BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
}
}