- 论坛徽章:
- 0
|
class SWTPane extends JPanel {
DisplayThread displayThread;
Browser browser;
String ipAddress;
private Canvas canvas;
Display dis;
public SWTPane(String ipAddress) {
this.ipAddress = ipAddress;
displayThread = new DisplayThread();
displayThread.start();
canvas = new Canvas();
setLayout(new BorderLayout());
add(canvas, BorderLayout.CENTER);
}
public void addNotify() {
super.addNotify();
dis = displayThread.getDisplay();
dis.syncExec(new Runnable() {
public void run() {
final Shell shell = SWT_AWT.new_Shell(displayThread.getDisplay(),
canvas);
shell.setLayout(new FillLayout());
browser = new Browser(shell, SWT.NONE);
browser.setLayoutData(BorderLayout.CENTER);
browser.setUrl(ipAddress);
}
});
}
}
class DisplayThread extends Thread {
private Display display;
Object sem = new Object();
public void run() {
synchronized (sem) {
display = new Display();
sem.notifyAll();
}
swtEventLoop();
}
private void swtEventLoop() {
while (true) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
}
public synchronized Display getDisplay() {
try {
synchronized (sem) {
while (display == null)
sem.wait();
return display;
}
} catch (Exception e) {
return null;
}
}
}
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/29346/showart_328745.html |
|