swt-awt swtのBrowserをswingの上で表示するための準備2
2010/01/10
browser
java
swt
かなり前に書いた記事。
すぐにコードを利用したいのでちょっと補完しておきます。
elipseでswtを利用したい場合、僕はeclipseのpluginからswt.jarをコピーしてワークスペースのプロジェクトのlibフォルダにおいておきます。
あわせて、sourceももってきます。
こんな感じ。
以下、swt経由でbrowserを呼び出しコード
package a;
import java.awt.BorderLayout;
import java.awt.Canvas;
import java.awt.Dimension;
import java.net.MalformedURLException;
import javax.swing.JFrame;
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 Main {
public static void main(String[] args) throws MalformedURLException {
final Canvas canvas = new Canvas();
JFrame frame = new JFrame() {
{
setSize(new Dimension(400, 500));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getContentPane().setLayout(new BorderLayout());
getContentPane().add(canvas, BorderLayout.CENTER);
}
};
// 先に表示する。
frame.setVisible(true);
b(canvas);
}
public static void b(java.awt.Canvas canvas) throws MalformedURLException {
Display display = new Display();
Shell shell = SWT_AWT.new_Shell(display, canvas);
shell.setLayout(new FillLayout());
Browser browser = new Browser(shell, SWT.NONE);
boolean rc = browser.setUrl("http://www.yahoo.co.jp");
shell.setSize(canvas.getWidth(), canvas.getHeight());
shell.pack();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
}
}
import java.awt.BorderLayout;
import java.awt.Canvas;
import java.awt.Dimension;
import java.net.MalformedURLException;
import javax.swing.JFrame;
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 Main {
public static void main(String[] args) throws MalformedURLException {
final Canvas canvas = new Canvas();
JFrame frame = new JFrame() {
{
setSize(new Dimension(400, 500));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getContentPane().setLayout(new BorderLayout());
getContentPane().add(canvas, BorderLayout.CENTER);
}
};
// 先に表示する。
frame.setVisible(true);
b(canvas);
}
public static void b(java.awt.Canvas canvas) throws MalformedURLException {
Display display = new Display();
Shell shell = SWT_AWT.new_Shell(display, canvas);
shell.setLayout(new FillLayout());
Browser browser = new Browser(shell, SWT.NONE);
boolean rc = browser.setUrl("http://www.yahoo.co.jp");
shell.setSize(canvas.getWidth(), canvas.getHeight());
shell.pack();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
}
}
: