The Java Program: Browser.java
1 import java.net.URL;
2 import java.net.MalformedURLException;
3 import java.io.IOException;
4
5 import java.awt.*;
6 import javax.swing.JFrame;
7 import javax.swing.JScrollPane;
8 import javax.swing.JEditorPane;
9 import javax.swing.event.HyperlinkEvent;
10 import javax.swing.event.HyperlinkListener;
11
12 public class Browser extends JEditorPane {
13
14 static URL url;
15
16 public static void init () throws IOException {
17 final Browser browser = new Browser ();
18 browser.setEditable (false);
19 browser.setPage (url); // JEditorPane takes URL as input
20
21 class LinkListener implements HyperlinkListener {
22 public void hyperlinkUpdate (HyperlinkEvent ev) {
23 final HyperlinkEvent.EventType type = ev.getEventType();
24 if (type == HyperlinkEvent.EventType.ACTIVATED) {
25 try {
26 browser.setPage (url);
27 url = ev.getURL();
28 } catch (IOException ex) {
29 ex.printStackTrace (System.err);
30 }
31 }
32 }
33 }
34 browser.addHyperlinkListener (new LinkListener ());
35 final JFrame frame = new JFrame ("Browser");
36 frame.getContentPane().add (new JScrollPane (browser));
37 frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); // Requires Java 1.3
38 frame.setSize (400,300);
39 frame.setVisible (true);
40 }
41
42 public static void main (String args[]) {
43 if (args.length > 0) {
44 try {
45 url = new URL(args[0]);
46 init ();
47 } catch (MalformedURLException e) {
48 System.err.println (args[0] + " is not a valid URL");
49 } catch (IOException e) {
50 e.printStackTrace (System.err);
51 }
52 } else {
53 System.err.println ("The program requires a URL as an argument.");
54 }
55 }
56
57 }