SWT Tips and Samples 基礎編 > Browser |
|
BrowserBrowserクラスは、SWT3.0から新しく導入されたカスタムクラスです。SWT3.0以前では、Webブラウザを実装するには、OLEクラスを駆使して自作するしかありませんでした。しかし、Browserクラスを使うことで非常に簡単にWebブラウザをSWTのウィジェットして作成することができます。基本的な使い方を以下に示します。 Browser browser = new Browser(shell, SWT.NONE); //URLを設定 browser.setURL("http://www.yahoo.co.jp"); //BackやFowardを実行 browser.back(); browser.forward(); またBrowserにaddTitleListenerやaddLocationListenerを使ってハンドラーを追加すれば、ページ読み込み完了時などの処理を実装できます。まだ他にも便利なListenerが用意されていますが、後ほど詳しく紹介する予定です。 browser.addTitleListener(new TitleListener(){ public void changed(TitleEvent event) { //ロードされたページタイトルが取得されたときこのメソッドが呼ばれます ... } }); browser.addLocationListener(new LocationListener(){ public void changing(LocationEvent event) { //URLが変更中のときにこのメソッドが呼ばれます。 ... } public void changed(LocationEvent event) { //URLの変更が終了し終わったときこのメソッドが呼ばれます。 ... } }); サンプルプログラム「戻る」[進む」など単純な機能のみを持つウェブブラウザです。URL入力のためのテキストフィールドやページの読み込み状況を示すステータスラインもついています。たったこれだけのソースコードで簡易ブラウザが書けてしまうのは、SWTのメリットです。なおこのサンプルを実行するには、SWT3.0のjarファイルと、DLL(Windowsの場合)を用意しておく必要があります。 ソースコード (BrowserTest.java)import org.eclipse.swt.widgets.*; import org.eclipse.swt.SWT; import org.eclipse.swt.browser.Browser; import org.eclipse.swt.browser.LocationEvent; import org.eclipse.swt.browser.LocationListener; import org.eclipse.swt.browser.TitleEvent; import org.eclipse.swt.browser.TitleListener; import org.eclipse.swt.events.KeyAdapter; import org.eclipse.swt.events.KeyEvent; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.*; public class BrowserTest { private Text urlText; private Browser browser; private Label statusLabel; public static void main(String[] args) { new BrowserTest(); } public BrowserTest() { Display display = new Display(); final Shell shell = new Shell(display); shell.setText("BrowserTest"); shell.setLayout(new GridLayout(6, false)); GridData gd; Button backButton = new Button(shell, SWT.PUSH); backButton.setText("戻る"); backButton.addSelectionListener(new SelectionAdapter(){ public void widgetSelected(SelectionEvent e) { if (browser.isBackEnabled()){ browser.back(); } } }); Button forwardButton = new Button(shell, SWT.PUSH); forwardButton.setText("進む"); forwardButton.addSelectionListener(new SelectionAdapter(){ public void widgetSelected(SelectionEvent e) { if (browser.isForwardEnabled()){ browser.forward(); } } }); urlText = new Text(shell, SWT.SINGLE | SWT.BORDER); gd = new GridData(); gd.horizontalSpan = 3; gd.widthHint = 300; urlText.setLayoutData(gd); urlText.addKeyListener(new KeyAdapter(){ public void keyPressed(KeyEvent e) { if (e.keyCode == 13){ browser.setUrl(urlText.getText()); } } }); Button jumpButton = new Button(shell, SWT.PUSH); jumpButton.setText("移動"); jumpButton.addSelectionListener(new SelectionAdapter(){ public void widgetSelected(SelectionEvent e) { browser.setUrl(urlText.getText()); } }); browser = new Browser(shell, SWT.NONE); gd = new GridData(GridData.FILL_BOTH); gd.horizontalSpan = 6; browser.setLayoutData(gd); statusLabel = new Label(shell, SWT.NONE); gd = new GridData(GridData.FILL_HORIZONTAL); gd.horizontalSpan = 6; statusLabel.setLayoutData(gd); browser.setUrl("http://cjasmin.fc2web.com/index.html"); browser.addTitleListener(new TitleListener(){ public void changed(TitleEvent event) { shell.setText("BrowserTest - " + event.title); } }); browser.addLocationListener(new LocationListener(){ public void changing(LocationEvent event) { statusLabel.setText(event.location + " を読み込み中"); } public void changed(LocationEvent event) { statusLabel.setText("読み込み完了"); urlText.setText(event.location); } }); shell.setSize(800,600); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } display.dispose(); } } 最新更新日: 2004年7月13日 |
- PR -
【Sony】大手他社よりも安い!ビジネス向け光・100Mしかも固定IP付!今なら更に初期費用最大15,000円OFF!
オフィス用品・オフィス家具 価 格 交 渉 可!
注文から納品まで驚きの早さ!!【ASKULカタログ】はこちらから・・・ マイクロソフト お得な見積! まとめての購入ならオトクな方法で。ライセンスだから管理も簡単。 シマンテック 割引価格! オンライン販売だから低価格。いつでも簡単、見積・購入。 |
||||
|
|||||
Copyright(C) 2003,2004 Jasmin Project. All Right Reserved. |
SEO | [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送 | ||