Mega Code Archive

 
Categories / Java Tutorial / Swing
 

Implementing Variable-Height Column Headers in a JTable Component

import java.awt.Component; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JLabel; import javax.swing.JTable; import javax.swing.UIManager; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.DefaultTableModel; import javax.swing.table.JTableHeader; public class Main {   public static void main(String[] argv) throws Exception {     DefaultTableModel model = new DefaultTableModel();     JTable table = new JTable(model);     model.addColumn("Col1");     model.addColumn("Icon Here");     table.getColumnModel().getColumn(0).setHeaderValue(new ImageIcon("image.gif"));     table.getColumnModel().getColumn(0).setHeaderRenderer(new IconHeaderRenderer());   } } class IconHeaderRenderer extends DefaultTableCellRenderer {   public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,       boolean hasFocus, int row, int column) {     if (table != null) {       JTableHeader header = table.getTableHeader();       if (header != null) {         setForeground(header.getForeground());         setBackground(header.getBackground());         setFont(header.getFont());       }     }     if (value instanceof Icon) {       setIcon((Icon) value);       setText("");     } else {       setText((value == null) ? "" : value.toString());       setIcon(null);     }     setBorder(UIManager.getBorder("TableHeader.cellBorder"));     setHorizontalAlignment(JLabel.CENTER);     return this;   } }