Implementing Variable-Height Column Headers in a JTable Component : JTableHeader « Swing « Java Tutorial






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;
  }
}








14.61.JTableHeader
14.61.1.Removing the Column Headers from a Scrollable in a JTable Component
14.61.2.Removing Column Headers: provide empty strings as the column header names.Removing Column Headers: provide empty strings as the column header names.
14.61.3.Hiding column headers: table.setTableHeader(null);Hiding column headers: table.setTableHeader(null);
14.61.4.Using Tooltips in Table Headers: Showing Tooltip Text in a Table HeaderUsing Tooltips in Table Headers: Showing Tooltip Text in a Table Header
14.61.5.Customizing Column Headers with IconsCustomizing Column Headers with Icons
14.61.6.Creating a Custom Column Header Renderer in a JTable Component
14.61.7.Setting Column Header Tool Tips in a JTable Components
14.61.8.Customizing a JTableHeader Look and Feel
14.61.9.Showing the Table Header in a Non-Scrollable JTable Component
14.61.10.Implementing Variable-Height Column Headers in a JTable Component
14.61.11.Listening for Clicks on a Column Header in a JTable Component