トップ 新規 編集 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

Javaの応用:簡易ウェブブラウザ

JavaFXでウェブブラウザ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package sample.javafx;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.web.WebView;
import javafx.stage.Stage;

public class WebBrowser extends Application {
    public static void main(String[] args) {
        launch(args);
    }
    @Override
    public void start(Stage stage) throws Exception {
        WebView webView = new WebView();
        stage.setScene(new Scene(webView, 800, 600));
        webView.getEngine().load("http://www.google.co.jp/");
        stage.titleProperty().bind(webView.getEngine().titleProperty());
        stage.show();
    }
}

URLを入力すると該当ページを表示するウェブブラウザ

  • 標準クラスライブラリのJEditorPaneをHTMLの表示に用いた簡易ウェブブラウザ
  • 上部のテキストボックスにURLを入力すると該当URLに移動する
    • このためにテキストボックスにActionListnerを登録している
  • ページ中のJavaScriptは実行されない
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package sample.appilication;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;

import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextField;

public class SimpleWebBrowser01 {
    private String HOMEPAGE="http://www.google.co.jp/";    //最初にセットしておくURL
    private JFrame frame = new JFrame();                    //フレーム自体
    private JEditorPane webPagePane = new JEditorPane();    //実際にウェブページの表示に使われる
    private JTextField address = new JTextField(HOMEPAGE);    //URLが入力されるフィールド
    public SimpleWebBrowser01() {
        //アドレスが変更されたさいのactionListnerを登録する。
        address.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent ae) {
                try {
                    webPagePane.setPage(address.getText());
                } catch (IOException e) {}
            }
        });
        webPagePane.setEditable(false);        //ウェブページの表示使われるJEditorPaneを変更不能に設定する
        try {
            webPagePane.setPage(HOMEPAGE);//ホームページの設定
        } catch (IOException e) {}

        //×を押したときに終了するように
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //コンポーネントを登録する
        frame.add(address, BorderLayout.NORTH);
        frame.add(new JScrollPane(webPagePane));
        //フレームの表示関係
        frame.setSize(800,600);
        frame.setVisible(true);
    }
    public static void main(String[] args) {
        new SimpleWebBrowser01();
    }
}

URLを入力すると該当ページを表示しクリックしたリンクを表示するウェブブラウザ

  • 上の簡易ウェブブラウザにHyperLinkListnerを加え、リンクをクリックすると該当ページに移動することを実現した簡易ウェブブラウザ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
package sample.appilication;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;

import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;

public class SimpleWebBrowser02 {
    private String HOMEPAGE="http://www.google.co.jp/";    //最初にセットしておくURL
    private JFrame frame = new JFrame();                    //フレーム自体
    private JEditorPane webPagePane = new JEditorPane();    //実際にウェブページの表示に使われる
    private JTextField address = new JTextField(HOMEPAGE);    //URLが入力されるフィールド
    public SimpleWebBrowser02() {
        //アドレスが変更されたさいのactionListnerを登録する。
        address.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent ae) {
                setUrl(address.getText());
            }
        });
        //ウェブページ中のリンクがクリックされたときのHyperLinkListnerを登録する
        webPagePane.addHyperlinkListener(new HyperlinkListener(){
            public void hyperlinkUpdate(HyperlinkEvent he) {
                if(he.getEventType()!=HyperlinkEvent.EventType.ACTIVATED) return;
                String url = he.getURL().toString();
                setUrl(url);
                address.setText(url);
            }
        });
        webPagePane.setEditable(false);        //ウェブページの表示使われるJEditorPaneを変更不能に設定する
        setUrl(HOMEPAGE);
        //×を押したときに終了するように
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //コンポーネントを登録する
        frame.add(address, BorderLayout.NORTH);
        frame.add(new JScrollPane(webPagePane));
        //フレームの表示関係
        frame.setSize(800,600);
        frame.setVisible(true);
    }
    private void setUrl(String url) {
        try {
            webPagePane.setPage(url);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public static void main(String[] args) {
        new SimpleWebBrowser02();
    }
}

SWTを利用しIEコンポーネントで表示するウェブブラウザ

  • EclipseのGUIライブラリであるSWTを用いることで、一般的なウェブブラウザの機能の多くを簡単に実現しているブラウザ。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package sample.appilication;

import org.eclipse.swt.SWT;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.browser.TitleEvent;
import org.eclipse.swt.browser.TitleListener;
import org.eclipse.swt.events.KeyAdapter;
import org.eclipse.swt.events.KeyEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;

public class SimpleWebBrowserWithSWT01 {
    final static String HOMEPAGE="http://www.yahoo.co.jp/";    //とりあえずホームページ
    Display display = new Display();
    Shell shell = new Shell(display);
    Text urlText = new Text(shell, SWT.SINGLE);    //一行指定
    Browser browser = new Browser(shell, SWT.FILL);

    public SimpleWebBrowserWithSWT01() {

        //url入力テキストへのリスナー登録
        urlText.addKeyListener(new KeyAdapter() {
            public void keyPressed(KeyEvent e) {
                if (e.keyCode == SWT.CR) {
                    browser.setUrl(urlText.getText());
                }
            }
        });
        //ブラウザのタイトル変更に関するリスナー登録
        browser.addTitleListener(new TitleListener() {
            public void changed(TitleEvent event) {
                shell.setText(event.title);
            }
        });
        
        //レイアウト情報
        urlText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
        browser.setLayoutData(new GridData(GridData.FILL_BOTH));
        shell.setLayout(new GridLayout(1, false));
        shell.setSize(800, 600);

        //ホームページを開く
        urlText.setText(HOMEPAGE);
        browser.setUrl(HOMEPAGE);
        
        shell.open();
        while (!shell.isDisposed()) {
            if (!display.readAndDispatch()) {
                    display.sleep();
            }
        }
        display.dispose();
    }

    public static void main(String[] args) {
        new SimpleWebBrowserWithSWT01();
    }
}
  • ScreenShot

ファイルが存在しません。