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

JEditorPaneでWebページを表示しよう!

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

執筆者:掌田 津耶乃

JEditorPaneとは?


Javaのプログラムの中で、Webサイトの表示をさせたい、と思うことはないでしょうか。例えば、ボタンを押すと自分のサイトにあるページがウインドウの一部に表示される、なんてことができればずいぶんと面白い使い方ができそうですね。

このように「WebのページをSwingのウインドウの中に表示する」というときに用いられるのが、「JEditorPane」というコンポーネントです。これは、さまざまなフォーマットによるドキュメントをレンダリングして表示するのに用いられるものです。JEditorPaneには各種のデータフォーマットを編集するためのキットがいくつか用意されており、それによってまったく異なる種類のデータを表示させることができます。標準では、標準テキスト、HTML、RTFといったデータに対応しています。

とりあえず、ここではHTMLのドキュメント表示にしぼって説明していきましょう。では、もっとも単純な例として、JEditorPaneに、GoogleのWebサイトを表示させる簡単なサンプルを作成してみましょう。

package jp.allabout;

import java.awt.*;
import java.awt.event.*;
import java.io.IOException;

import javax.swing.*;

public class SampleApp extends JFrame {
  JTextField url_field;
  JEditorPane doc_pane;
  
  public SampleApp(){
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JPanel p1 = new JPanel();
    p1.setLayout(new GridLayout(1,2));
    url_field = new JTextField();
    p1.add(url_field);
    JButton btn = new JButton("OK");
    p1.add(btn);
    this.add(p1,BorderLayout.NORTH);
    try {
      doc_pane = new JEditorPane("http://google.com/");
    } catch (IOException e) {
      e.printStackTrace();
      doc_pane = new JEditorPane();
    }
    JScrollPane scroll = new JScrollPane(doc_pane,
        JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
        JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    this.add(scroll,BorderLayout.CENTER);
    this.setSize(new Dimension(400,400));
  }

  public static void main(String[] args){
    new SampleApp().setVisible(true);
  }
}

実際に試してみるとわかりますが、このJEditorPaneでは、Webページの表示を完全に再現できるわけではありません。JEditorPaneで再現できるのは、あくまで「HTML」によるコードです。最近のWebサイトでは、JavaScriptなどのスクリプトを使ってページを校正したりしていますが、こうしたものはうまく表示されません(JEditorPaneの内部でJavaScriptは実行できないため)。


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

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

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