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

故事背景:最近公司给的任务,在桌面程序中嵌套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)_第1张图片

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
    }

}

你可能感兴趣的:(java-rcp)