The Java Program: TableValues.java

  1 //  From Professional Java Programming by Brett Spell
  2 
  3 import java.util.Calendar;
  4 import java.util.GregorianCalendar;
  5 import javax.swing.table.AbstractTableModel;
  6 
  7 public class TableValues extends AbstractTableModel {
  8 
  9    public final static int FIRST_NAME = 0;
 10    public final static int LAST_NAME = 1;
 11    public final static int DATE_OF_BIRTH = 2;
 12    public final static int ACCOUNT_BALANCE = 3;
 13    public final static int GENDER = 4;
 14 
 15    public final static boolean GENDER_MALE = true;
 16    public final static boolean GENDER_FEMALE = false;
 17     
 18    public final static String[] columnNames = {
 19       "First Name", "Last Name", "Date of Birth", "Account Balance", "Gender"};
 20 
 21    public Object[][] values = {
 22       {"Clay", "Ashworth", 
 23         new GregorianCalendar(1962, Calendar.FEBRUARY, 20).getTime(), 
 24         new Float(12345.67), new Boolean(GENDER_MALE)},
 25       {"Jacob", "Ashworth", 
 26        new GregorianCalendar(1987, Calendar.JANUARY, 6).getTime(), 
 27        new Float(23456.78), new Boolean(GENDER_MALE)},
 28       {"Jordan", "Ashworth", 
 29        new GregorianCalendar(1989, Calendar.AUGUST, 31).getTime(), 
 30        new Float(34567.89), new Boolean(GENDER_FEMALE)},
 31       {"Evelyn", "Kirk",
 32        new GregorianCalendar(1945, Calendar.JANUARY, 16).getTime(), 
 33        new Float(-456.70), new Boolean(GENDER_FEMALE)},
 34       {"Belle", "Spyres", 
 35         new GregorianCalendar(1907, Calendar.AUGUST, 2).getTime(), 
 36         new Float(567.00), new Boolean(GENDER_FEMALE)}
 37    };
 38 
 39    public int getRowCount() {
 40       return values.length;
 41    } 
 42 
 43    public int getColumnCount() {
 44       return values[0].length;
 45    } 
 46 
 47    public Object getValueAt(int row, int column) {
 48       return values[row][column];
 49    } 
 50 
 51    public String getColumnName(int column) {
 52       return columnNames[column];
 53    } 
 54 
 55    public Class getColumnClass (int column) {
 56       final Class dataType;
 57       if (column == ACCOUNT_BALANCE) {
 58          dataType = Float.class;
 59       } else if (column == DATE_OF_BIRTH) {
 60          dataType = java.util.Date.class;
 61       } else if ((column == FIRST_NAME) || (column == LAST_NAME)) {
 62          dataType = String.class;
 63       } else if (column == GENDER) {
 64          dataType = Boolean.class;
 65       } else {
 66          dataType = super.getColumnClass(column);
 67       }
 68       return dataType;
 69    }
 70 
 71    public boolean isCellEditable (int row, int column) {
 72       return (column == GENDER);
 73    }
 74 
 75    public void setValueAt (Object value, int row, int column) {
 76       values[row][column] = value;
 77    }
 78 }