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

今天在网上找了好久如何用在java swing打开网页,从而实现显示网页图表的效果,功夫不负有心人,终于搞定了,下面把所用的类和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);



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值