Java 嵌入浏览器-DJ NativeSwing

 

Java里面的嵌入浏览器一直比较麻烦,不像C#,VB想调用IE的时候只需要一句话就搞定了,不过现在许多应用都需要在UI里面嵌入一个浏览器,就像Qq,MSN之类,而且如果DesktopUi跟嵌入浏览器能进行数据传递,相互调用的话那就更好了。 以前在Swing里面一直知道的就是JDIC了,JDIC是通过JNI包装调用IE或者FireFox,虽然调用方式比较丑陋,不过基本的还是实现了,起码在Swing里面也能调 了,不过Swing里面只能简单的进行到浏览器的前进,后退,加载,刷新,停止操作,对某些特殊的想法就无能为力了。 今天无意中看到了DJ Native的项目,其实这个项目好像很久之前也看到过,看过Demo,当时没细看,只觉得跟JDIC也差不多,今天才发现,原来DJ native要强大很多。 DJ Native解决了一些JDIC的问题,比如说 轻量级的Swing组件跟它的重量级的组件的绘制问题,Z-order问题。还有Swing的model窗口无法block重量级组件的问题,已经重量级组件跟Swing线程交互的问题。 其实DJ Native底层是用基于SWT实现,众所周知,SWT是IBM搞的对本机API的包装,而且SWT经历过比JDIC更多的检验,比如说Eclipse之类,所以就这一点DJ Native也应该比JDIC有优势。 DJNative里面包含了五个组件和一个文件关联工具,组件包括JWebBrowser,JFlashPlayer,JVLCPlayer,JHTMLEditor,JWMediaPlayer(win32). 分别介绍:

  • JWebBrowser:
细心的人应该能看出这个是对SWT里面的浏览器做了一个封装,使之适应到Swing的环境下面,而SWT又是对本机浏览器的封装,通过JNI,不过这里面有两个个很大的亮点就是1.JWebBrowser支持从Swing调用JavaScript代码段动态的改变页面的内容。 2.JWebBrowser支持从页面上发送参数到Swing端。 这两个特性太酷了,这样就可以实现HTML页面跟Swing的相互调用交互。 JWebBrowser
  • JFlashPlayer:
JFlashPlayer跟JWebBrowser一样,是对FlashPlayer的一个封装,之所以独立的对FlashPlayer进行封装,这里有一个主要的目的就是能够对Flash进行交互,跟JWebBrowser一样,能够从Swing调用FlashPlayer里面的函数也能从FlashPlayer发送参数到Swing端。这个也很酷,不过我不会Flash,所以也就算了。 JFlashPlayer
  • JVLCPlayer:
JVLCPlayer这个是封装了一个VLC的播放器,之所以封装一个VLC的播放器我想应该是出于跨平台的考虑吧,IE里面其实本身也有Embed的播放器的。 JVLCPlayer
  • JHTMLEditor:
JHTMLEditor是封装的一个FCKEditor,其实我之前也一直在想既然Swing没有很好的HTML所见即所得的编辑器,为什么不用JDIC嵌入一个浏览器,然后再调用FCKEditor之类,不过这样做有个很大的问题就是如何跟浏览器交互的问题,你可以通过JDIC得到当前浏览器的整个内容,但是这样做还得遍历整个浏览器的文档去找到用户在FCKEditor里面输入了什么。
  • JWMediaPlayer(w32):
这个是针对WindowsMediaPlayer的一个封装。 更多的去作者的文章里面看吧:http://java.dzone.com/news/dj-nativeswing-reloaded-jwebbr

1 评论:

wellsmed 说...

我之前找了很多java浏览器,像lobo之类的,都很不理想. 尝试了一下这个DJ nativeswing, 不错. 谢谢你推荐.