/** * @URLview.java * * Sköter det grafiska för * uppgift tre. * Skapar allt vi vill ha. * * * @author Karl-Adam Karlsson * @version 1.0 06/09/30 * * */ import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.net.*; import java.io.*; import java.applet.*; /** * Summary description for URLView * */ public class URLApple extends JApplet { // Variabler private Container container; private JTextField urlField = new JTextField(); private JTextArea viewText = new JTextArea(); //private JScrollPane textScroller = new JScrollPane(); //private JButton getURL = new JButton(); // /* * Konstruktor, anropar super(), och sedan initialize * component. * Slutligen sätter vi visible till true. * */ public void init(){ container = getContentPane(); setLocation(new Point(0, 0)); //super(); initializeComponent(); //getContentPane().add(container); //setDefaultCloseOperation(EXIT_ON_CLOSE); fetchCode(urlField.getText()); //container.setVisible(true); } /** * Här initialiserar vi det grafiska gränssnittet, * och fixar med lyssnare. */ private void initializeComponent() { JButton getURL = new JButton(); JScrollPane textScroller = new JScrollPane(); //JButton getURL = new JButton(); //urlField = new JTextField(); //viewText = new JTextArea(); //textScroller = new JScrollPane(); //getURL = new JButton(); //contentPane = (JPanel)this.getContentPane(); // urlField, urlField.setText("http://www.svd.se"); urlField.setToolTipText("Write your URL here"); urlField.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { urlFieldAction(e); } }); // viewText, där texten skall visas // textScroller, en scroller för texten. textScroller.setViewportView(viewText); // getURL, knappen som trycks för att utföra hämtningen. // getURL.setBackground(new Color(227, 224, 217)); getURL.setText("Retrieve"); getURL.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { getURLAction(e); } }); // contentPane, bara en content pane. // container.setLayout(null); addComponent(/*contentPane,*/ urlField, 107,12,611,22); addComponent(/*contentPane,*/ getURL, 16,11,83,25); addComponent(/*contentPane,*/ textScroller, 106,45,612,490); // URLView // //this.setTitle("Url visare"); this.setLocation(new Point(0, 0)); this.setSize(new Dimension(800, 600)); } /* * Add Component, hjälper till att göra just det. * utan layoutmanager. **/ private void addComponent(/*Container container,*/ Component c,int x,int y,int width,int height) { c.setVisible(true); c.setBounds(x,y,width,height); container.add(c); } // Eventhanterare för urlField och Retrieve knappen /* * Hanterar events för URLfield. * Egentligen bara Enter vi vill lyssna på, Enter här skall vara ekvivalent * med att trycka retrieve. * */ private void urlFieldAction(ActionEvent e) { fetchCode(urlField.getText()); } /* * Retrieve action listener. * Tycker man retrieve vill vi hämta sidan. * */ private void getURLAction(ActionEvent e) { fetchCode(urlField.getText()); } /* * Kodhämtare metoden. * Anropas från getURLAction eller urlFieldAction * * Skapar ny URL utifrån aURL (indata) * Öppnar sn ström och lsöer buffert till strängen line medan det finns kvar. * Lägger tuill lite i viewText. * */ private void fetchCode(String aURL){ //System.out.println(aURL); viewText.setText(""); try{ URL myURL = new URL(aURL); URLConnection newConnection = myURL.openConnection(); newConnection.setDoInput(true); InputStream urlStream = newConnection.getInputStream(); BufferedReader urlInput = new BufferedReader(new InputStreamReader(urlStream)); String line = ""; while ((line = urlInput.readLine()) != null) viewText.append(line+'\n');//.setText(viewText.getText()+'\n'+line); } catch (Exception e){ System.out.println(e.toString()); } } /* * Init * public void init() { JFrame.setDefaultLookAndFeelDecorated(true); JDialog.setDefaultLookAndFeelDecorated(true); try { UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); } catch (Exception ex) { System.out.println("Failed loading L&F: "); System.out.println(ex); } new URLApple(); } */ }