SWT Tips and Samples 基礎編 > Browser

 

Browser

Browserクラスは、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日
 
関連リンク
Eclipse API ドキュメント

- PR -

プレゼンテーション作成ソフト無料お試し版配信中

【Sony】大手他社よりも安い!ビジネス向け光・100Mしかも固定IP付!今なら更に初期費用最大15,000円OFF!

オフィス用品・オフィス家具 価 格 交 渉 可! 
◎ 目指せ★業界最安値 ★ ◎ オフィネット・ドットコム株式会社

注文から納品まで驚きの早さ!!【ASKULカタログ】はこちらから・・・

マイクロソフト お得な見積! まとめての購入ならオトクな方法で。ライセンスだから管理も簡単。

シマンテック 割引価格! オンライン販売だから低価格。いつでも簡単、見積・購入。

■原石のままでは、終わりたくない貴方へ!キャリアアップ転職を成功へとナビゲート

秋葉原・なんば・名古屋・札幌に店舗を構えるパソコンショップ!【ツクモ】


Copyright(C) 2003,2004 Jasmin Project. All Right Reserved.
SEO [PR] おまとめローン Windows7 冷え性対策 動画 掲示板 レンタルサーバー ライブチャット SEO