Mega Code Archive

 
Categories / Java / Swing JFC
 

File data Table

/*  * This example is from the book "Java Foundation Classes in a Nutshell".  * Written by David Flanagan. Copyright (c) 1999 by O'Reilly & Associates.    * You may distribute this source code for non-commercial purposes only.  * You may study, modify, and use this example for any purpose, as long as  * this notice is retained.  Note that this example is provided "as is",  * WITHOUT WARRANTY of any kind either expressed or implied.  */ import javax.swing.*; import javax.swing.table.*; import java.io.File; import java.util.Date; public class FileTableDemo {   public static void main(String[] args) {     // Figure out what directory to display;     File dir;     if (args.length > 0) dir = new File(args[0]);     else dir = new File(System.getProperty("user.home"));     // Create a TableModel object to represent the contents of the directory     FileTableModel model = new FileTableModel(dir);     // Create a JTable and tell it to display our model     JTable table = new JTable(model);     // Display it all in a scrolling window and make the window appear     JFrame frame = new JFrame("FileTableDemo");     frame.getContentPane().add(new JScrollPane(table), "Center");     frame.setSize(600, 400);     frame.setVisible(true);   } } /**  * The methods in this class allow the JTable component to get  * and display data about the files in a specified directly.  * It represents a table with 6 columns: file name, size, modification date,   * plus three columns for flags: directory, readable, writable  **/ class FileTableModel extends AbstractTableModel {   protected File dir;   protected String[] filenames;   protected String[] columnNames = new String[] {     "name", "size", "last modified", "directory?", "readable?", "writable?"   };   protected Class[] columnClasses = new Class[] {      String.class, Long.class, Date.class,        Boolean.class, Boolean.class, Boolean.class   };   // This table model works for any one given directory   public FileTableModel(File dir) {      this.dir = dir;      this.filenames = dir.list();  // Store a list of files in the directory   }   // These are easy methods.   public int getColumnCount() { return 6; }  // A constant for this model   public int getRowCount() { return filenames.length; }  // # of files in dir   // Information about each column.   public String getColumnName(int col) { return columnNames[col]; }   public Class getColumnClass(int col) { return columnClasses[col]; }   // The method that must actually return the value of each cell.   public Object getValueAt(int row, int col) {     File f = new File(dir, filenames[row]);     switch(col) {     case 0: return filenames[row];     case 1: return new Long(f.length());     case 2: return new Date(f.lastModified());     case 3: return f.isDirectory() ? Boolean.TRUE : Boolean.FALSE;     case 4: return f.canRead() ? Boolean.TRUE : Boolean.FALSE;     case 5: return f.canWrite() ? Boolean.TRUE : Boolean.FALSE;     default: return null;     }   } }