import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; public class BrowserAdvanced extends JFrame { private JTextField tf = new JTextField("https://people.dsv.su.se/~pierre/i/i.cgi?href=aa_public/home/main.txt"); private JEditorPane ep = new JEditorPane(); public static void main(String[] args) { new BrowserAdvanced(); } public BrowserAdvanced() { setDefaultCloseOperation(EXIT_ON_CLOSE); tf.setColumns(40); tf.addActionListener(new L1()); JPanel p = new JPanel(); p.setLayout(new FlowLayout()); p.add(tf); getContentPane().add("North", p); getContentPane().add("Center", new JScrollPane(ep)); ep.addHyperlinkListener(new L2()); ep.setEditable(false); setSize(640, 400); setVisible(true); getPageFromNet(); } private void getPageFromNet() { try { ep.setPage(tf.getText()); } catch(Exception e) { ep.setText("Error: " + e); System.out.println(e.toString()); } Toolkit.getDefaultToolkit().beep(); } class L1 implements ActionListener { public void actionPerformed(ActionEvent ae) { getPageFromNet(); } } class L2 implements HyperlinkListener { public void hyperlinkUpdate(HyperlinkEvent he) { if(he.getEventType() == HyperlinkEvent.EventType.ACTIVATED) { try { tf.setText(he.getURL().toString()); ep.setPage(he.getURL()); } catch(Exception e) { ep.setText("Error: " + e); System.out.println(e.toString()); } Toolkit.getDefaultToolkit().beep(); } } } }