Javaプログラミング/Javaプログラミング関連情報

JEditorPaneでWebページを表示しよう!(5ページ目)

今回は、HTMLのドキュメントを表示できるJEditorPaneの使い方について説明しましょう。

執筆者:掌田 津耶乃

HyperlinkListenerの実装


リンクにマウスポインタを移動すると指のcursorに変わる。クリックすればリンク先に移動する。


JEditorPaneに表示されたドキュメント内のリンクを利用するためには、2つの処理が必要となります。1つは、JEditorPaneを「編集不可」にする、という作業です。これは、以下のようにして行っていますね。

doc_pane.setEditable(false);

これで編集不可の状態にできました。編集不可にしておかないと、この後に説明するイベントが発生しないのです。このため、これは下準備として必ず行う必要があります。

もう1つは、リンクをマウスで操作する際に発生するイベントの処理を実装する、というものです。リンクをマウスで操作した際には「HyperlinkEvent」というイベントが発生します。これは、「HyperlinkListener」というイベントリスナーをimplementsして実装します。このイベントはAWTにはなく、Swingから新たに用意されたものであるため、javax.swing.eventパッケージに必要なクラスやインターフェイスが用意されています。

クラスの定義を見てみると、「implements ActionListener,HyperlinkListener」というようにHyperlinkListenerをimplementsしていることがわかりますね。そして、JEditorPaneインスタンスを作成するところで、

doc_pane.addHyperlinkListener(this);

このようにして、HyperlinkListenerをJEditorPaneに組み込んでいます。これで、リンクを操作するとイベントが発生し、このイベントリスナーで処理されるようになります。

リンクを操作した際に発生するイベントは、HyperlinkListenerの「hyperlinkUpdate」というメソッドによって処理されます。これは以下のように定義されます。

public void hyperlinkUpdate(HyperlinkEvent e) {
  ……イベント処理……
}

引数に渡されるHyperlinkEventインスタンスには、発生したイベントに関する情報がまとめられています。ここから、イベントの種類、リンク先のURLといった情報をえることができます。

このイベント処理でもっとも注意しなければならないのは「リンクをクリックしたとき以外にもイベントは発生する」という点でしょう。このイベントは、マウスポインタをリンク上に移動しただけで発生します。ですから、イベントの種類を調べ、リンクをクリックしたときに移動するように処理を行う必要があります。

if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED){...

ここでは、HyperlinkEventインスタンスの「getEventType」というものを呼び出しています。これは発生したイベントの種類を示すもので、HyperlinkEvent.EventTypeクラスのクラスフィールドとして値が用意されています。

マウスでリンクをクリックしたときのイベントは、HyperlinkEvent.EventType.ACTIVATEDとなります。従って、getEventTypeがこの値であったときだけ処理を行うようにすればよいわけですね。

URL url = e.getURL();
url_field.setText(url.toString());
doc_pane.setPage(url);

クリックしたリンクのURLは、HyperlinkEventの「getURL」で得ることができます。このURLをそのままsetPageすれば、JEditorPaneの表次ページがリンク先のURLに変更できるというわけです。

リンク関係のイベントは、イベントの種類による操作さえしっかり理解できれば、それほど複雑ではありません。リンクは、いろいろな応用が考えられます。「Webページの表示」ということだけでなく、ちょっとしたリンクをJEditorPaneで用意しておけるだけでも、ずいぶんと面白いことができますね。
【編集部おすすめの購入サイト】
楽天市場で Java 関連の書籍を見るAmazon で Java 関連の書籍を見る
  • 前のページへ
  • 1
  • 3
  • 4
  • 5
※記事内容は執筆時点のものです。最新の内容をご確認ください。
※OSやアプリ、ソフトのバージョンによっては画面表示、操作方法が異なる可能性があります。

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます