local FileTableModel

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Satanduvel
    New Member
    • Apr 2007
    • 8

    local FileTableModel

    Hey i have a "problem" with mine FileTableModel. I get al the values in my JTable but there isn't a ".." directory in the JTable. So i want to create a row with the option to go 1 directory up. How do i do that?

    Code:
    dir = new File("C:\\java");
    		    FileTableModel model = new FileTableModel(dir);
    		    
    		    TableSorter sorter1 = new TableSorter(model);
    	        table = new JTable(sorter1);
    	        
    	        sorter1.setTableHeader(table.getTableHeader());
    	        sorter1.setSortingStatus(0, -1);
    		    
    			TableColumn column = null;
    			for (int i = 0; i < 3; i++) {
    			    column = table.getColumnModel().getColumn(i);
    			    if (i == 0) {
    			        column.setPreferredWidth(20);
    			    } else {
    			    	if (i == 1){
    			    		column.setPreferredWidth(160);
    			    	}
    			    	else
    			    	{
    			    		column.setPreferredWidth(80);
    			    	}
    			    }
    			}
    			ListSelectionModel listMod1 =  table.getSelectionModel();
    			listMod1.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
    			listMod1.addListSelectionListener(this);
    			
    			table.addMouseListener(this);
    			tLocal.setText(dir.getPath());
    			table.getTableHeader().setReorderingAllowed(false);
    			table.setRowHeight(20);
    			
    			scrClient = new JScrollPane(table);


    The filetable is created with this code:

    Code:
    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[] { 
    			Icon.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 3; }  // 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 f.isDirectory() ? folder : files;
    		    case 1: return filenames[row];
    		    case 2: if (f.isDirectory()==true){
    		    				return null;
    		    			}else{
    		    				return new Long(f.length());
    		    			}
    		    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;
    		    }
    		  }
    		 }
Working...