重载单元描述器。
下面例子仅供参考。//表格的使用(表格不可编辑,和加入对象)
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import javax.swing.table.*;public class TableTest3 extends JFrame
{
String[] columnNames = {"Name", "Check-In Date", "Check-Out Date", "Smoking","Fax", "Laptop", "Room Rate", "Photo"}; Date dayOne = (new GregorianCalendar(2002, 12, 29)).getTime();
Date dayTwo = (new GregorianCalendar(2002, 12, 29)).getTime(); Object[][] data = {
{ "Andrews", dayOne, dayTwo,
   new Boolean(true), new Boolean(true),
   new Boolean(true), new Double(79.99),
   new ImageIcon("tenchi.jpg")}, { "Anthony", dayOne, dayTwo,
   new Boolean(false), new Boolean(false),
   new Boolean(false), new Double(69.99),
   new ImageIcon("washu.jpg")}, { "Woodard", dayOne, dayTwo,
   new Boolean(true), new Boolean(false),
   new Boolean(false), new Double(99.99),
   new ImageIcon("sasami.jpg")}, { "Thomas", dayOne, dayTwo,
   new Boolean(false), new Boolean(true),
   new Boolean(true), new Double(79.99),
   new ImageIcon("aeka.jpg")}, { "Reed", dayOne, dayTwo,
   new Boolean(true), new Boolean(true),
   new Boolean(true), new Double(79.99),
   new ImageIcon("tenchi.jpg")}, { "Crenshaw", dayOne, dayTwo,
   new Boolean(false), new Boolean(false),
   new Boolean(false), new Double(69.99),
   new ImageIcon("washu.jpg")}, { "Royal", dayOne, dayTwo,
   new Boolean(true), new Boolean(false),
   new Boolean(false), new Double(99.99),
   new ImageIcon("sasami.jpg")}, { "Moore", dayOne, dayTwo,
   new Boolean(false), new Boolean(true),
   new Boolean(true), new Double(79.99),
   new ImageIcon("aeka.jpg")},
}; JTable table = new JTable(new CustomModel(data, columnNames));
public TableTest3()
{
JTableHeader   hd=table.getTableHeader();
hd.setDefaultRenderer(new myHeader()); getContentPane().add(new JScrollPane(table),BorderLayout.CENTER);
show();
} public static void main(String args[]) { new TableTest3();
}
}
class  myHeader  implements TableCellRenderer
{
private JButton  btn=new JButton("op",new ImageIcon("sasami.jpg"));
public Component getTableCellRendererComponent(JTable table, Object value,boolean isSelected,boolean hasFocus, int row,int column)
{
btn.setFont(new Font("隶书",Font.BOLD,20));
btn.setForeground(Color.red);
btn.setHorizontalTextPosition(SwingConstants.CENTER);
btn.setBackground(Color.yellow);
btn.setText(value.toString());
btn.setToolTipText("提示式:"+btn.getText());
return btn;
}
}
class CustomModel extends DefaultTableModel {
public CustomModel(Object[][] data, Object[] columnNames)
{
super(data, columnNames);
}
public Class getColumnClass(int col)
{
Vector v = (Vector)dataVector.elementAt(0);
return v.elementAt(col).getClass();
}
public boolean isCellEditable(int row, int col)
{
Class columnClass = getColumnClass(col);
return columnClass != ImageIcon.class && columnClass != Date.class;
}
}