The Java Program: MultiLineHeaderRenderer.java

  1 //  From Professional Java Programming by Brett Spell
  2 
  3 import java.awt.Component;
  4 import java.awt.GridLayout;
  5 import java.util.StringTokenizer;
  6 import javax.swing.JLabel;
  7 import javax.swing.JPanel;
  8 import javax.swing.JTable;
  9 import javax.swing.LookAndFeel;
 10 import javax.swing.table.TableCellRenderer;
 11 
 12 public class MultiLineHeaderRenderer extends JPanel implements TableCellRenderer {
 13 
 14    public Component getTableCellRendererComponent (JTable table, 
 15       Object value, boolean isSelected, boolean hasFocus, 
 16       int row, int column) {
 17 
 18       removeAll();
 19       final StringTokenizer strtok = new StringTokenizer((String)value, "\r\n");
 20       setLayout(new GridLayout(strtok.countTokens(), 1));
 21       while (strtok.hasMoreElements()) {
 22          final JLabel label = new JLabel((String)strtok.nextElement(), JLabel.CENTER);
 23          LookAndFeel.installColorsAndFont(label, 
 24                                           "TableHeader.background", 
 25                                           "TableHeader.foreground", 
 26                                           "TableHeader.font");
 27          add(label);
 28       } 
 29       LookAndFeel.installBorder(this, "TableHeader.cellBorder");
 30       return this;
 31    } 
 32 
 33 }