The Java Program: MultiLineHeaderRenderer.java
1
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 }