rcp桌面程序嵌入chrome内核(JxBrowser)

时间:2022-03-30 11:41:43

故事背景:最近公司给的任务,在桌面程序中嵌套jsp页面,因为之前都是做web项目,初次接触rcp,研究一下还是可以的,很容易的将jsp页面嵌套进桌面程序中,但是又一个难题来了,此jsp页面只是用于chrome内核浏览器而我们现在用的rcp默认浏览器内核为IE,这下头都大了,查了好多资料终于搞定,结果代码就几十行,但怎么说事搞定了:
解决步骤:
首先解决浏览器内核问题:
需要 jxbrowser.jar 、 license.jar这两个jar包
查看一下是需要收费,只能自己破解,刚好在网上看好一篇帖子:《简单破解Java浏览器组件jxbrowser》 :http://www.freebuf.com/articles/web/41112.html
项目结构,其中JxBrowserDemo.java类的包结构如下图:
rcp桌面程序嵌入chrome内核(JxBrowser)

JxBrowserDemo.java

package com.teamdev.jxbrowser.chromium.demo;

import java.util.logging.Level;

import com.teamdev.jxbrowser.chromium.Browser;
import com.teamdev.jxbrowser.chromium.LoggerProvider;

public class JxBrowserDemo {

static{
LoggerProvider.setLevel(Level.OFF);
}

public static Browser createBrowser(){
return new Browser();
}
}

其次代码:

package com.taocares.naoms.fims.client.flight.viewpartseat;

import java.awt.BorderLayout;

/**
* 机坪监管
*
* @author ZY
*
*/

public class AirportRegulation {
ParameterDto parameterDto = FimsServiceFactory.getService(
IFimsConfigQueryService.class).getParameterByName("REPORT_URL");

/**
* @wbp.parser.entryPoint
*/

@Inject
public AirportRegulation() {
}

/**
* @wbp.parser.entryPoint
*/

@PostConstruct
public void postConstruct(Composite parent) {
Composite composite = new Composite(parent, SWT.EMBEDDED
| SWT.NO_BACKGROUND);
final Frame frame = SWT_AWT.new_Frame(composite);
SwingUtilities.invokeLater(new Runnable() {
public void run() {
Browser browser = com.teamdev.jxbrowser.chromium.demo.JxBrowserDemo
.createBrowser();
BrowserView view = new BrowserView(browser);
frame.add(view, BorderLayout.CENTER);
frame.setVisible(true);
browser.loadURL(parameterDto.getContent()
+ "/naoms.rgl.web/view/front/rgl.jsp");
}
});

}

/**
* @wbp.parser.entryPoint
*/

@Focus
public void onFocus() {
// TODO Your code here
}

}