Content of Main.java extracted from checkweb.jar
// check web links using multi-thread // version 0.1: initial version // version 0.2: adapted to JDK 1.5 // version 0.3: adapted to package concept // // requires FetchURL.java and HttpConnection.java // add comments! package checkweb; import java.io.*; import java.util.Date; import java.util.ArrayList; import java.lang.reflect.*; import javax.swing.*; import java.awt.Dimension; import java.awt.GridLayout; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.table.DefaultTableModel; public class Main extends JPanel { static final String WindowTitle = "Check web links"; // title of the main window static final String cache = "cache"; // directory used to contain files static JTable table; public Main(Object[][] data) { super(new GridLayout(1,0)); String[] columnNames = {"URL","State"}; // table = new JTable(data, columnNames); table = new JTable(new DefaultTableModel(data, columnNames)) { public boolean isCellEditable(int row, int col) { // protect cell content by returning <false> return false; } }; table.setPreferredScrollableViewportSize(new Dimension(500, 200)); table.setRowSelectionAllowed(false); //Create the scroll pane and add the table to it. JScrollPane scrollPane = new JScrollPane(table); //Add the scroll pane to this panel. add(scrollPane); } /** * Create the GUI and show it. For thread safety, * this method should be invoked from the * event-dispatching thread. */ private static void createAndShowGUI(Object[][] data) { //Make sure we have nice window decorations. JFrame.setDefaultLookAndFeelDecorated(true); //Create and set up the window. JFrame frame = new JFrame(WindowTitle); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Create and set up the content pane. Main newContentPane = new Main(data); newContentPane.setOpaque(true); //content panes must be opaque frame.setContentPane(newContentPane); //Display the window. frame.pack(); frame.setVisible(true); } public static void main(String args[]) { if(args.length ==1) { try { File dir = new File(cache); if (!dir.exists()) dir.mkdir(); LineNumberReader in = new LineNumberReader(new FileReader(args[0])); // JDK 1.5 ArrayList<String> data = new ArrayList<String>(); String s; while ((s = in.readLine()) != null) { s = s.trim(); if (s.length() != 0) data.add(s); } in.close(); int[] dimStr = {data.size(), 2}; Object[][] data2 = (Object[][]) Array.newInstance(Object.class,dimStr); for (int i = 0; i < data.size(); i++) { data2[i][0] = data.get(i); data2[i][1] = "trying..."; } try { UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); } catch (Exception e) { } createAndShowGUI(data2); for (int i = 0; i < data.size(); i++) { new FetchURL((String)data.get(i), i, table); } }catch (IOException ex){ System.err.println(ex); } } else { System.err.println("Usage: java checkweb.Main filename"); } } }