001 // Copyright 2006 by Basil Vandegriend. All rights reserved.
002
003 package com.basilv.examples.enums;
004
005 import java.awt.Dimension;
006 import java.util.*;
007
008 import javax.swing.*;
009 import javax.swing.table.*;
010
011
012 public 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 }