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

HTML解析ツールを作る(2ページ目)

今回は、URLを入力するとそのページにアクセスし、そこに含まれているリンクやイメージファイルを抜き出す解析ツールを作ってみます。

執筆者:掌田 津耶乃

リンクの処理はHyperlinkListenerで行う


単にWebページを表示するだけならこれで十分ですが、せめてリンクをクリックして移動するぐらいのことはできないとちょっと不便ですね。そこでJEditorPaneにハイパーリンクの機能をつけるには、どうすればいいのでしょう。

これには、まずJEditorPaneのsetEditableをfalseに設定し、編集不可の状態にしておく必要があります。表示をロックすると、JEditorPaneではハイパーリンク部分をクリックした際にjavax.swing.event.HyperlinkEventが発生するようになります。このイベントは、javax.swing.event.HyperlinkListenerというリスナークラスを使って処理することができます。これは、

html.addHyperlinkListener(this);


このようにaddHyperlinkListenerメソッドを使ってJEditorPaneに組み込むことができます。要するHyperlinkListenerには、必ず「hyperlinkUpdate」メソッドを実装しておく必要があります。ここでは、以下のようにしてハイパーリンクをクリックしたときのページ移動を実現しています。

public void hyperlinkUpdate(HyperlinkEvent ev) {
  if (ev.getEventType() == HyperlinkEvent.EventType.ACTIVATED){
    try {
      URL u = ev.getURL();
      url.setText(u.toString());
      html.setPage(u);
    } catch (IOException ex) {
      ex.printStackTrace();
    }
  }
}


メソッドで最初にやることは、「発生したイベントの種類を調べる」ことです。HyperlinkEventが発生するのは、リンクをクリックしたときだけではありません。したがって、リンクをクリックしてハイパーリンクのための呼び出しが行われたときにのみページ移動の処理を行うようにしておく必要があります。

ここでは、HyperlinkEventの「getEventType」というものを使ってイベントの種類を調べていますね。イベントの種類は、HyperlinkEvent.EventTypeにクラスフィールドとして用意されています。ACTIVATEDであれば、ハイパーリンクによるページ移動が呼び出されたと判断できるわけです。

種類の特定さえできれば、後は簡単ですね。HyperlinkEventから「getURL」で発生したイベントのURLインスタンスを取得します。これがハイパーリンクの移動先を示すものです。これを元にテキストフィールドに移動先のURLを表示し、JEditorPaneにsetPageすればページ移動が行えるようになります。


  • 前のページへ
  • 1
  • 2
  • 3
  • 5
  • 次のページへ

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

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