// Exercise18_8.java: Display HTML file in JEditorPane
// This program can display a local or a remote resource
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import javax.swing.*;
import java.net.URL;
import javax.swing.event.*;
import java.io.*;
public class Exercise18_8 extends JApplet
implements ActionListener, HyperlinkListener
{
// JEditor pane to view HTML files
JEditorPane jep = new JEditorPane();
// Label for URL
JLabel jlblURL = new JLabel("URL");
// Text field for entering URL
JTextField jtfURL = new JTextField();
// Initialize the applet
public void init()
{
// Create a panel jpURL to hold the label and text field
JPanel jpURL = new JPanel();
jpURL.setLayout(new BorderLayout());
jpURL.add(jlblURL, BorderLayout.WEST);
jpURL.add(jtfURL, BorderLayout.CENTER);
// Create a scroll pane to hold JEditorPane
JScrollPane jspViewer = new JScrollPane();
jspViewer.getViewport().add(jep, null);
// Place jpURL and jspViewer in the applet
this.getContentPane().add(jspViewer, BorderLayout.CENTER);
this.getContentPane().add(jpURL, BorderLayout.NORTH);
// Set jep noneditable
jep.setEditable(false);
// Register listener
jep.addHyperlinkListener(this);
jtfURL.addActionListener(this);
}
public void actionPerformed(ActionEvent e)
{
// TODO: Implement this java.awt.event.ActionListener method
String urlString = jtfURL.getText().trim();
if (isSubstring("www", urlString))
{
urlString = "http://" + urlString;
}
URL url;
try
{
if (isSubstring("http", urlString))
{
// Get the URL from remote Web server
url = new URL(urlString);
}
else
{
// Get the URL from local host
url = this.getClass().getResource(urlString);
}
System.out.println("urlString " + urlString);
// Display the HTML file
jep.setPage(url);
}
catch (IOException ex)
{
System.out.println(ex);
}
}
public void hyperlinkUpdate(HyperlinkEvent e)
{
// TODO: Implement HyperlinkListener method
try
{
jep.setPage(e.getURL());
}
catch (IOException ex)
{
System.out.println(ex);
}
}
// Main method
public static void main(String[] args)
{
// Create a frame
JFrame frame = new JFrame("Exercise 16.8: Web Browser");
// Create an instance of the applet
Exercise18_8 applet = new Exercise18_8();
// Add the applet instance to the frame
frame.getContentPane().add(applet, BorderLayout.CENTER);
// Invoke init() and start()
applet.init();
applet.start();
// Display the frame
frame.setSize(600, 600);
// frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
// Check if the first string is a substring of the second string
public static boolean isSubstring(String first, String second)
{
int remainingLength = second.length();
int startingIndex = 0;
// Note toWhile is a label. You can use break with a label
// attached.
toWhile: while (first.length() <= remainingLength)
{
// What is wrong if the following line is used
// for (int i=startingIndex; i<=first.length(); i++)
for (int i=0; i