Mega Code Archive

 
Categories / Java by API / Javax Swing Table
 

Extends AbstractTableModel (Custom class type)

import java.awt.BorderLayout; import java.io.File; import java.util.Date; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.AbstractTableModel; public class MainClass extends JFrame {   public MainClass() {     super("Custom TableModel Test");     setSize(300, 200);     setDefaultCloseOperation(EXIT_ON_CLOSE);     FileModel fm = new FileModel();     JTable jt = new JTable(fm);     jt.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);     jt.setColumnSelectionAllowed(true);     JScrollPane jsp = new JScrollPane(jt);     getContentPane().add(jsp, BorderLayout.CENTER);   }   public static void main(String args[]) {     MainClass ft = new MainClass();     ft.setVisible(true);   } } class FileModel extends AbstractTableModel {   String titles[] = new String[] { "Directory?", "File Name", "Read?", "Write?", "Size",       "Last Modified" };   Class types[] = new Class[] { Boolean.class, String.class, Boolean.class, Boolean.class,       Number.class, Date.class };   Object data[][];   public FileModel() {     this(".");   }   public FileModel(String dir) {     File pwd = new File(dir);     setFileStats(pwd);   }   public int getRowCount() {     return data.length;   }   public int getColumnCount() {     return titles.length;   }   public String getColumnName(int c) {     return titles[c];   }   public Class getColumnClass(int c) {     return types[c];   }   public Object getValueAt(int r, int c) {     return data[r][c];   }   public void setFileStats(File dir) {     String files[] = dir.list();     data = new Object[files.length][titles.length];     for (int i = 0; i < files.length; i++) {       File tmp = new File(files[i]);       data[i][0] = new Boolean(tmp.isDirectory());       data[i][1] = tmp.getName();       data[i][2] = new Boolean(tmp.canRead());       data[i][3] = new Boolean(tmp.canWrite());       data[i][4] = new Long(tmp.length());       data[i][5] = new Date(tmp.lastModified());     }     fireTableDataChanged();   } }