首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Swing上怎么利用SWT调用IE

2012-11-04 
Swing下如何利用SWT调用IE浏览器的Panelpackage com.browserimport java.awt.BorderLayoutimport java.a

Swing下如何利用SWT调用IE

浏览器的Panel

package com.browser;import java.awt.BorderLayout;import java.awt.Canvas;import java.awt.Panel;import javax.swing.JPanel;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;public class SWTPanel extends JPanel {/** *  */private static final long serialVersionUID = -1089789032409665511L;DisplayThread displayThread;private Canvas canvas;public SWTPanel() {displayThread = new DisplayThread();displayThread.start();canvas = new Canvas();setLayout(new BorderLayout());add(canvas, BorderLayout.CENTER);}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 BrowserPanel browser = new BrowserPanel(shell, SWT.NONE);browser.setLayoutData(BorderLayout.CENTER);browser.setUrl("http://localhost:8080/test2/index2.html");}});}}


DisplayThread.java

package com.browser;import org.eclipse.swt.widgets.Display;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;}}}


参考http://blog.csdn.net/fafey/article/details/721988

热点排行