import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.net.*; import java.io.*; /** * Uppgift 3.0 * @author emi-lind * */ public class Browser extends JFrame { private JTextArea browserArea; private JTextField inputField; private Browser() { super("Simple Browser 1.0"); initJFrameSettings(); String defaultWebpage = "http://people.dsv.su.se/emi-lind/"; initLayout(defaultWebpage); loadWebpage(defaultWebpage); } /** * Laddar en hemsida och visar källkoden * @param aTargetUrl sidan att ladda */ private void loadWebpage(String aTargetUrl) { StringBuffer output = new StringBuffer(); String finalOutput = new String(); try { String line = new String(); URL url = new URL(aTargetUrl); BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream())); int lineNo = 0; while((line = br.readLine()) != null) { output.append(++lineNo + ":\t " + line + "\n"); } finalOutput = output.toString(); br.close(); } catch(IOException err) { finalOutput = "Page not found: " + aTargetUrl; } this.browserArea.setText(finalOutput); } /** * Laddar grafiken och lyssnare * @param Defaulttexten för inputField */ private void initLayout(String aTargetUrl) { inputField = new JTextField(aTargetUrl); browserArea = new JTextArea(); browserArea.setEditable(false); Container cont = this.getContentPane(); cont.add(inputField, BorderLayout.NORTH); cont.add(new JScrollPane(browserArea), BorderLayout.CENTER); inputField.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent aev) { loadWebpage(inputField.getText()); } }); validate(); } private void initJFrameSettings() { this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); this.setVisible(true); this.setSize(700, 500); } /** * @param args används inte */ public static void main(String[] args){new Browser();} private static final long serialVersionUID = 1L; }