MainClass.java Source code

Java tutorial

Introduction

Here is the source code for MainClass.java

Source

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();
    }
}