001// Copyright 2006 by Basil Vandegriend.  All rights reserved.
002
003package com.basilv.examples.enums;
004
005import java.awt.Dimension;
006import java.util.*;
007
008import javax.swing.*;
009import javax.swing.table.*;
010
011
012public class PersonTableModelUsage
013{
014
015  public static void main(String[] args) {
016    
017    List<Person> list = new ArrayList<Person>();
018    list.add(new Person("Dave", "Davidson", 
019      60, createDate(1946, 03, 13)));
020    list.add(new Person("Bob", "Smith", 
021      40, createDate(1966, 04, 30)));
022    list.add(new Person("John", "Jones", 
023      20, createDate(1986, 01, 15)));
024    list.add(new Person("Jimmy", "Xi", 
025      30, createDate(1976, 05, 22)));
026    
027    PersonTableModel tableModel = new PersonTableModel();
028    tableModel.setPersonList(list);
029    
030    JTable table = new JTable(tableModel);
031
032    // Adjust column widths
033    int widthOfTypicalCharacter = 
034      table.getFontMetrics(table.getFont()).charWidth('x');
035    
036    TableColumnModel columnModel = table.getColumnModel();
037    for (int i = 0; i < columnModel.getColumnCount(); i++) {
038      TableColumn tableColumn = columnModel.getColumn(i);
039      PersonTableModel.Column column = PersonTableModel.Column
040        .values()[i];
041      tableColumn.setPreferredWidth(widthOfTypicalCharacter
042        * column.getWidthInCharacters());
043    }
044
045    JScrollPane scrollPane = new JScrollPane(table);
046    scrollPane.setPreferredSize(new Dimension(300, 100));
047    
048    JOptionPane.showMessageDialog(null, scrollPane, 
049      "Person Table", JOptionPane.INFORMATION_MESSAGE);
050    
051    System.exit(0);
052  }
053  
054  private static Date createDate(
055    int year, int month, int dayOfMonth) {
056    Calendar calendar = Calendar.getInstance();
057    calendar.set(year, month - 1, dayOfMonth, 0, 0);
058    return calendar.getTime();
059  }
060  
061}