java swing 内置浏览器打开网页显示flash图表-swt Browser应用

今天在网上找了好久如何用在java swing打开网页,从而实现显示网页图表的效果,功夫不负有心人,终于搞定了,下面把所用的类和swt.jar整理了一下,方便有需要的朋友使用。

 

用到的swt.jar下载

 

调用网页的Browser要结合现有的java控件使用,一下是结合panel定义的类(SWTPane.java):

 

 

 

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package desktopapplicationmenu.comm;

import java.awt.BorderLayout;
import java.awt.Canvas;
import java.awt.Panel;
import org.eclipse.swt.SWT;
import org.eclipse.swt.awt.SWT_AWT;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.layout.FillLayout;

import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

/**
 *
 * @author liujl
 */
public class SWTPane extends Panel {

    DisplayThread displayThread;
    private Canvas canvas;

    public SWTPane() {
        displayThread = new DisplayThread();
        displayThread.start();
        canvas = new Canvas();
        setLayout(new BorderLayout());
        add(canvas, BorderLayout.CENTER);
    }
 public static void main(String args[]) throws Exception {

     java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                new SWTPane().setVisible(true);
            }
        });
     
 }
    public void addNotify() {
        super.addNotify();
        Display dis = displayThread.getDisplay();
        dis.syncExec(new Runnable() {

            public void run() {
                Shell shell = SWT_AWT.new_Shell(displayThread.getDisplay(), canvas);
                shell.setLayout(new FillLayout());
                final Browser browser = new Browser(shell, SWT.NONE);
                browser.setLayoutData(BorderLayout.CENTER);
                browser.setUrl("http://www.my400800.cn");
            }
        });
    }
}
 

 

里面为了防止在打开网页的时候出现错误,封装了一下Thread类,定义如下(DisplayThread.java):

 

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package desktopapplicationmenu.comm;

import org.eclipse.swt.widgets.Display;

/**
 *
 * @author liul
 */
public class DisplayThread extends Thread {

    private Display display;
    Object sem = new Object();

    public void run() {
        synchronized (sem) {
            display = Display.getDefault();
            sem.notifyAll();
        }
        swtEventLoop();
    }

    private void swtEventLoop() {
        while (true) {
            if (!display.readAndDispatch()) {
                display.sleep();
            }
        }
    }

    public Display getDisplay() {
        try {
            synchronized (sem) {
                while (display == null) {
                    sem.wait();
                }
                return display;
            }
        } catch (Exception e) {
            return null;
        }
    }
}
 

 

调用方法

        SWTPane jbtn_Sel = new SWTPane();
        jPanel1.add(jbtn_Sel);
        jbtn_Sel.setBounds(1, 1, 600, 600);

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java内置浏览器内核是指Java开发环境(JDK)或Java运行环境(JRE)默认提供的用于浏览网页内置浏览器引擎。也就是说,开发人员可以直接使用Java提供的API(Application Programming Interface,应用程序编程接口)来创建、控制和操作一个浏览器窗口,以加载、渲染和处理网页。 在JavaJavaFX包含了一个内置浏览器引擎,称为JavaFX WebView。JavaFX WebView使用WebKit作为其底层的浏览器内核。WebKit是一个开源的浏览器引擎,最初是由苹果公司开发并且用于其Safari浏览器。后来,WebKit也被其他浏览器如Google Chrome和Opera采用。所以,JavaFX WebView实际上使用的是WebKit的一个Java绑定。 通过JavaFX WebView,开发人员可以将网页嵌入到自己的Java应用程序,并且可以对网页内容进行各种操作,如显示网页、点击链接、填写表单、执行JavaScript代码等。 除了JavaFX WebView之外,Java还提供了另一个内置浏览器引擎,称为Swing JEditorPane。Swing JEditorPane是一个基于Java Swing框架的文本编辑器组件,它可以用来展示HTML内容。Swing JEditorPane使用的是一个叫做HTMLEditorKit的实现,这个实现是基于浏览器引擎的功能子集进行的。 综上所述,Java内置浏览器内核主要包括JavaFX WebView和Swing JEditorPane。其JavaFX WebView使用WebKit作为底层浏览器引擎,而Swing JEditorPane则是基于浏览器引擎的功能子集实现的。开发人员可以根据自己的需求和偏好来选择使用哪种内置浏览器引擎来构建他们的Java应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值