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のレンダラを使ったタブブラウザをつくってみました。とても簡単です。ちなみに出来上がりはこんな感じです。
ちゃんとエラー表示の下のほうをみると「Internet Explorer」と出ていますね。さて、早速作り方です。 まずは、JDICのライブラリをダウンロードしてきます。今日時点での最新版は0.9.1です。今回はWindows版のjdic-0.9.1-bin-windows.zipを使用します。
アーカイブを展開したら jdic.jarをNetBeansプロジェクトのライブラリに追加します。
次に実行時のライブラリを追加します。拡張子がdllとかexeのものです。NetBeansのライブラリの追加は.jarとかしか反応してくれませんので、ディレクトリを選択してからファイル名の欄に「*.*」などを入力して全ファイル表示してから追加すると楽チンです。
ではさっそくブラウザのデザインです。なんちゃって感を出すためにデザインには懲りません(笑)。追加したのはJTabbedPaneとJTextFieldです。
次にJTextFieldにアクションを追加します。プロパティの「イベント」タブをクリックして、actionPerformedというアクションのところの「<なし>」と書かれているところをクリックすると新しいアクションが追加されます。 では早速コーディングです。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);
これで出来上がりです。簡単ですね!
★ お名前を空欄にするとIPアドレスが、お名前欄に記入されます。
|
Today's Page Hits: 702 |
cool
Posted by wow gold on 11月月 03日, 2008年 at 10:45 午前 JST #