目次へ

15.2. javax.swing.event.HyperlinkListener

「JEditorPane」はそのままではリンクをクリックしても何の反応も示しません。リンクを有効にするためには「HyperlinkListener」を実装する必要があります。「HyperlinkListener」は「JEditorPane」が編集不可能モードで、リンクがクリックされた場合などに発生するイベント「HyperlinkEvent」を処理するイベントリスナーです。リンクにマウスが入っただけでもイベントは発生します。

「HyperlinkListener」は「hyperlinkUpdate」メソッドだけを持ち、引数に「HyperlinkEvent」オブジェクトを取ります。「HyperlinkEvent」は「getType」メソッドでイベントのタイプを、「getURL」でリンクのURLを取得する事ができます。「JEditorPane」の「setPage」メソッドに渡してやれば、ページの遷移を実現する事ができます。

最後に注意点ですが、複数のフレームから構成されるHTMLページの場合には、上記の方法は上手くいきません。該当するフレームではなく、ウィンドウ全体にクリックしたページが表示されてしまいます。これを避けるためには「HyperlinkEvent」クラスを拡張したクラスである「HTMLFrameHyperlinkEvent」クラスと「HTMLDocument」クラスを利用する必要があります。

(実習課題2)

実習課題1のプログラムを改良しなさい。

  • リンクをクリックした際に、該当するページを表示できるようにする事。
  • フレームで区切られたHTMLページにも対応できるようにする事。
  • (ヒント)「hyperlinkUpdate」メソッドの引数「HyperlinkEvent」が「HTMLFrameHyperlinkEvent」オブジェクトであった場合、「HTMLDocument」クラスの「processHTMLFrameHyperlinkEvent」メソッドを呼び出す。
  • (ヒント)「HTMLFrameHyperlinkEvent」オブジェクトであるかどうかの識別には「instanceof」を使用する。
  • (ヒント)「HTMLDocument」オブジェクトの取得は「JEditorPane」の「getDocument」メソッドで。
  • (ヒント)「JEditorPane」のAPIドキュメントを参考に。

解答例はこちら

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp