/* * MyAdvancedBrowser * * Version 1.0 * * 20061005 * * Author: Jenny Nordgren */ /** * MyAdvancedBrowser is a simple webbrowser * */ import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.event.HyperlinkListener; import javax.swing.event.HyperlinkEvent; import java.net.*; import java.io.*; import java.util.ArrayList; public class MyAdvancedBrowser extends JFrame implements ActionListener, HyperlinkListener { private JTextField addressField = new JTextField(30); private JEditorPane documentArea = new JEditorPane(); private JLabel messageLabel = new JLabel(); public MyAdvancedBrowser() { Container con = getContentPane(); con.setLayout(new BorderLayout()); this.setTitle("MyAdvancedBrowser"); JButton goButton = new JButton("Go!"); goButton.addActionListener(this); JLabel addressFieldLabel = new JLabel("Adress:"); addressField.addActionListener(this); addressField.setEditable(true); documentArea.setEditable(false); documentArea.addHyperlinkListener(this); JScrollPane scroller = new JScrollPane(documentArea); //scroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); JPanel addressPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); addressPanel.add(addressFieldLabel); addressPanel.add(addressField); addressPanel.add(goButton); messageLabel.setOpaque(true); messageLabel.setBackground(Color.YELLOW); messageLabel.setVisible(false); con.add(addressPanel, BorderLayout.NORTH); con.add(scroller, BorderLayout.CENTER); con.add(messageLabel, BorderLayout.SOUTH); setDefaultCloseOperation(EXIT_ON_CLOSE); setSize(700, 600); setVisible(true); } /** * actionPerformed är den metod som implementeras från Interfacet ActionListener. * När användaren trycker return eller på go-knappen laddas en webbsida eller så skrivs ett felmeddelande ut. * */ public void actionPerformed(ActionEvent e) { try { String address = addressField.getText(); URL myURL = new URL(address); if (myURL.getHost().equals("") || address.trim().equals("http://")) { throw new MalformedURLException(); } messageLabel.setVisible(false); BrowserThread showpage = new BrowserThread(documentArea, messageLabel, myURL); } catch (MalformedURLException mue) {messageLabel.setText("Skriv in en korrekt utformad webb-adress!"); messageLabel.setVisible(true); } } /** * hyperlinkUpdater är den metod som implementeras från Interfacet HyperlinkListener. När användaren klickar på en länk laddas en ny webbsida eller så skrivs ett felmeddelande ut. * */ public void hyperlinkUpdate(HyperlinkEvent linkevt) { if(linkevt.getEventType() == HyperlinkEvent.EventType.ACTIVATED) { messageLabel.setVisible(false); BrowserThread showpage = new BrowserThread(documentArea, messageLabel, linkevt.getURL(),addressField); } } /** * Mainmetoden skapar ett nytt browser-fönster. */ public static void main(String args[]) { MyAdvancedBrowser browser = new MyAdvancedBrowser(); } }