Java examples for Swing:JTable Column
Displaying an Icon in a Column Head of 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[] args) throws Exception { DefaultTableModel model = new DefaultTableModel(); JTable table = new JTable(model); model.addColumn("Col1"); model.addColumn("Col2"); // Set the icon renderer on the second column table.getTableHeader().getColumnModel().getColumn(1) .setHeaderRenderer(new My()); // Set the text and icon values on the second column for the icon render table.getColumnModel().getColumn(1)/*from w w w . j a v a2 s. c o m*/ .setHeaderValue(new TextAndIcon("Col2", new ImageIcon("icon.gif"))); } }// This class is used to hold the text and icon values // used by the renderer that renders both text and icons class TextAndIcon { TextAndIcon(String text, Icon icon) { this.text = text; this.icon = icon; } String text; Icon icon; } class My extends DefaultTableCellRenderer { public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { // Inherit the colors and font from the header component if (table != null) { JTableHeader header = table.getTableHeader(); if (header != null) { setForeground(header.getForeground()); setBackground(header.getBackground()); setFont(header.getFont()); } } if (value instanceof TextAndIcon) { setIcon(((TextAndIcon) value).icon); setText(((TextAndIcon) value).text); } else { setText((value == null) ? "" : value.toString()); setIcon(null); } setBorder(UIManager.getBorder("TableHeader.cellBorder")); setHorizontalAlignment(JLabel.CENTER); return this; } };