写一个定制的 TableCellRenderer 类 :
import java.awt.Component;
import java.awt.Image;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.table.TableCellRenderer;
// 应用到所有的单元格:
// table.setDefaultRenderer(Object.class, new ImageRenderer());
// 或者,应用到某一列的单元格:
// table.getColumnModel().getColumn((int)columnIndex).setCellRenderer(new ImageRenderer());
public class ImageRenderer implements TableCellRenderer
{
@SuppressWarnings("unchecked")
@Override
public Component getTableCellRendererComponent(
JTable table, Object value, boolean isSelected,
boolean hasFocus, int rowIndex, int columnIndex) {
if( value instanceof Image )
return new JLabel(new ImageIcon((Image)value));
else if( value instanceof File ) {
try {
return new JLabel(new ImageIcon(ImageIO.read((File)value)));
} catch(IOException ex) {
throw new RuntimeException(ex.getMessage(), ex);
}
}
else {
String val = String.valueOf(value);
try {
return new JLabel(new ImageIcon(ImageIO.read(new File(val))));
} catch(IOException ex) {
throw new RuntimeException(ex.getMessage(), ex);
}
}
}
}