Takayuki Okazaki's Weblog
ブログ: 岡崎 - Okazaki's blog
20060912 2006年 9月 12日 火曜日
今日のAPI: JDICブラウザAPIで、なんちゃってタブブラウザを作ろう
English Translation: (Yahoo!) / (Google)
JDIC(JDesktop Integration Components)というプロジェクトのコンポーネントの一つにWebブラウザコンポーネントというのがあります。なんだ、JavaでWebブラウザならしょぼいけどSwingでもJEditorPaneとか使えばできるでしょ。とか思われるかもしれませんが、JDICはネイティブ実装と組み合わせて動作するので、Run Anywhereでなくなる場合がありますが、たとえばInternet Explorerの画面をSwingアプリに貼り付けて、しかもURL指定とか、ダウンロードが終わったイベントとかを取れたりするちょっと力技のすごいAPIなのです。
今日はこのAPIを使ってInternet Explorerのレンダラを使ったタブブラウザをつくってみました。とても簡単です。ちなみに出来上がりはこんな感じです。
IE + Java(JDIC)でなんちゃってタブブラウザ
ちゃんとエラー表示の下のほうをみると「Internet Explorer」と出ていますね。さて、早速作り方です。

まずは、JDICのライブラリをダウンロードしてきます。今日時点での最新版は0.9.1です。今回はWindows版のjdic-0.9.1-bin-windows.zipを使用します。


アーカイブを展開したら jdic.jarをNetBeansプロジェクトのライブラリに追加します。
jdic.jarを追加


次に実行時のライブラリを追加します。拡張子がdllとかexeのものです。NetBeansのライブラリの追加は.jarとかしか反応してくれませんので、ディレクトリを選択してからファイル名の欄に「*.*」などを入力して全ファイル表示してから追加すると楽チンです。
ランタイムライブラリを追加


ではさっそくブラウザのデザインです。なんちゃって感を出すためにデザインには懲りません(笑)。追加したのはJTabbedPaneとJTextFieldです。
ウインドウを簡単にデザイン


次にJTextFieldにアクションを追加します。プロパティの「イベント」タブをクリックして、actionPerformedというアクションのところの「<なし>」と書かれているところをクリックすると新しいアクションが追加されます。
JTextFieldにアクションを追加


では早速コーディングです。jTextFieldのアクションのところに次のようなコードを書きます。(jTextField1やjTabbledPane1などの変数名は適当に読み替えてください)

    private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {
        final WebBrowser browser = new WebBrowser();
        browser.addWebBrowserListener(new WebBrowserListener() {
            public void titleChange(WebBrowserEvent webBrowserEvent) {
                jTabbedPane1.setTitleAt(jTabbedPane1.indexOfComponent(browser), webBrowserEvent.getData());
            }
            public void statusTextChange(WebBrowserEvent webBrowserEvent) {}
            public void downloadStarted(WebBrowserEvent webBrowserEvent) {}
            public void downloadProgress(WebBrowserEvent webBrowserEvent) {}
            public void downloadError(WebBrowserEvent webBrowserEvent) {}
            public void downloadCompleted(WebBrowserEvent webBrowserEvent) {}
            public void documentCompleted(WebBrowserEvent webBrowserEvent) {}
        });
        try {
            browser.setURL(new URL(jTextField1.getText()));
        } catch (MalformedURLException ex) {
            ex.printStackTrace();
        }
        jTabbedPane1.add("(タイトルなし)", browser);

これで出来上がりです。簡単ですね!
IEじゃないとレイアウトの崩れそうなページ(?)もこのとおり


投稿されたコメント:

cool

Posted by wow gold on 11月月 03日, 2008年 at 10:45 午前 JST #

★ お名前を空欄にするとIPアドレスが、お名前欄に記入されます。
コメント
コメントは無効になっています。
過去の記事
« 12月 2009
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
  
       
今日
Click me to subscribe このブログを購読(RSS)
検索

このブログ著者について
ソフトウエア・インフラストラクチャー・ソリューション本部のソリューション・アーキテクトでした(2008年8月退職)。 本業はSOAソリューションならびにSun Java CAPSによるソリューションのプリセールスをお手伝いするエンジニア、とJavaエバンジェリストグループに参加してセミナーに行ったり、趣味のプログラミング・ネタをこのブログで紹介したりしていました。現在は、ふらふらとwatermint.orgで活動中〜。
リンク
 
SunホットトピックPodcast - SunホットトピックPodcast
 


 

Today's Page Hits: 702