The Java Program: TableTest05.java

  1 import java.awt.Component;
  2 import java.awt.Container;
  3 import java.awt.BorderLayout;
  4 
  5 import javax.swing.*;
  6 import javax.swing.table.*;
  7 
  8 // requires TableValues
  9 // requires SortTableModel
 10 // requires SortMouseListener
 11 // requires SortColumnHeaderRenderer
 12 // requires GenderRenderer
 13 // requires CurrencyRenderer
 14 // requires MultiLineHeaderRenderer
 15 
 16 public class TableTest05 extends JFrame {
 17 
 18    public static void main (String[] args) {
 19       final JFrame frame  = new TableTest05 ();
 20       frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
 21       frame.setSize (400, 135);
 22       frame.setVisible (true);
 23    } 
 24 
 25    public TableTest05 () {
 26       final Container pane = getContentPane();
 27       pane.setLayout(new BorderLayout());
 28       final SortTableModel table_model = new SortTableModel(new TableValues ());
 29       final JTable table = new JTable(table_model);
 30       table.setRowSelectionAllowed(false);
 31       table.setColumnSelectionAllowed(true);
 32       table.setDefaultRenderer(Float.class, new CurrencyRenderer());
 33 
 34       final TableColumnModel tcm = table.getColumnModel();
 35       final TableColumn gender_column = tcm.getColumn(TableValues.GENDER);
 36       gender_column.setCellRenderer(new GenderRenderer());
 37       gender_column.setCellEditor(new GenderEditor());
 38 
 39       // Every column header has special renderer
 40       final MultiLineHeaderRenderer mlhr = new MultiLineHeaderRenderer();
 41       final SortColumnHeaderRenderer renderer = new SortColumnHeaderRenderer (table_model, mlhr);
 42       int count = tcm.getColumnCount();
 43       for (int i = 0; i < count; i++) {
 44          tcm.getColumn(i).setHeaderRenderer(renderer);
 45       }
 46 
 47       // Tool tips for column headers
 48       final JTableHeaderToolTips jthtt = new JTableHeaderToolTips(table.getColumnModel());
 49       jthtt.setToolTips(new String[] {"Customer's First Name",
 50                                       "Customer's Last Name", "Customer's Date of Birth",
 51                                       "Customer's Account Balance", "Customer's Gender"});
 52       table.setTableHeader (jthtt);
 53       table.getTableHeader().addMouseListener (new SortMouseListener ());
 54       final JScrollPane jsp = new JScrollPane(table);
 55       pane.add (jsp, BorderLayout.CENTER);
 56    }
 57 }