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}