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?
The filetable is created with this code:
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; } } }