The following code will add icon to column row
header to JTable. It used TableCellRenderer to change the header's
look and feel. Or maybe you want to download the 2 images used
by the following program.

//All copyright reserved by www.kidslovepc.com
//No redistribution is allowed without author persion and a back link
to www.kidslovepc.com
// Example from http://www.kidslovepc.com
//www.kidslovepc.com is not responsible for your data loss or any damage.
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.AbstractListModel;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListCellRenderer;
import javax.swing.ListModel;
import javax.swing.UIManager;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.*;
import javax.swing.*;
class myTableHeader implements TableCellRenderer
{
public Component getTableCellRendererComponent(JTable table, Object
value, boolean isSelected, boolean hasFocus, int row, int column)
{
JLabel label=null;
switch(column)
{
case 0:
label=new JLabel(value.toString (),new ImageIcon("dragonfly.gif"),JLabel.CENTER);
//set your image here
break;
case 3:
label=new JLabel(value.toString (),new ImageIcon("dot.gif"),JLabel.CENTER);
//set your image here
break;
default:
label=new JLabel(value.toString (),JLabel.CENTER);
break;
}
label.setBorder(UIManager.getBorder("TableHeader.cellBorder"));
return label;
}
}
public class IconHeader
{
//icon column header example
public static void main(String[] args) {
JFrame frame=new JFrame("Row Header Example");
frame.setSize(300, 150);
frame.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
//create a table
String headers[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
DefaultTableModel dm = new DefaultTableModel(headers.length , 6);
JTable table = new JTable(dm);
JTableHeader header=table.getTableHeader();
header.setReorderingAllowed(false);
header.setDefaultRenderer(new myTableHeader());
JScrollPane scroll=new JScrollPane(table);
frame.getContentPane().add(scroll);
//table header
frame.setVisible(true);
}
}