//Import av nödvändiga klasser import javax.swing.*; import javax.swing.event.*; import java.awt.*; import java.awt.event.*; import java.net.*; import java.io.*; /** * IP1 - Uppgift 2b * Ett äpple med ett grafiskt användargränssnitt som * implementerar en enkel browser. * Informationen från samma domän som äpplet, hämtas, tolkas * och presenteras i en text-area. * * @author Blanca Larkeson */ //Klassen ärver av JApplet public class Uppgift2b extends JApplet{ JEditorPane ed; JPanel övre; JScrollPane scroll; JLabel label; JTextField field; JButton knapp; Uppgift2b up = this; String svar; String nyadress = "http://atlas.dsv.su.se/~blanca-l/ip1/handin.html"; String adress = ""; //Konstruktor och initieringsmetod som anroppas av browsern //Placering av fönsterkomponenter public void init(){ ed = new JEditorPane(); ed.setEditable(false); ed.addHyperlinkListener(new L2()); //Lyssnare som reagerar på hyperlänkar scroll = new JScrollPane(ed); getContentPane().add(scroll, BorderLayout.CENTER); övre = new JPanel(); övre.setBackground(Color.blue.darker()); label = new JLabel("URL-adress: "); label.setForeground(Color.yellow); övre.add(label); field = new JTextField(30); field.setText(nyadress); field.addActionListener(new L()); //Lyssnare som reagerar på "Enter" övre.add(field); knapp = new JButton(" SEARCH "); Cursor c = Cursor.getPredefinedCursor(Cursor.HAND_CURSOR); knapp.setCursor(c); knapp.addActionListener(new L()); //Lyssnare som reagerar på knappen "Search" övre.add(knapp); getContentPane().add(övre, BorderLayout.NORTH); if (adress != nyadress){ adress = nyadress; nySida(adress); } } //Metod som visar innehållet från angiven URL-adress public void nySida (String s){ try{ URL url = new URL(s); ed.setPage(url); } catch (Exception e){ ed.setText("Could not load page: " +s+ "\n" + "Error: " + e.getMessage()); } } //Lyssnare som läser URL-adress och anropar metoden "nySida" class L implements ActionListener{ public void actionPerformed (ActionEvent ae){ up.nySida(field.getText()); } } //Lyssnare som följer hyperlänkar och visar det nya innehållet class L2 implements HyperlinkListener{ public void hyperlinkUpdate (HyperlinkEvent he){ if (he.getEventType() == HyperlinkEvent.EventType.ACTIVATED){ try{ URL url = he.getURL(); ed.setPage(he.getURL()); field.setText(url.toString()); } catch (Exception e){ ed.setText("Error: " + e.getMessage()); } } } } }