要在jtable中插入图片,应该使用TableCellRenderer

class MyRenderer extends DefaultTableCellRenderer {

/* 重写getTableCellRendererComponent方法,
* @see TableCellRenderer#getTableCellRendererComponent(JTable, Object, boolean, boolean, int, int)
*/
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus,
int row, int column) {
setIcon(null); // 一定要这句,不然会出现Icon不断改变的现象
setBorder(null); // 去掉边框
if(value instanceof ImageIcon) {
setIcon((Icon) value);// 因为DefaultTableCellRenderer是extends JLabel的
if(isSelected)
setBorder(new LineBorder(Color.red));
// 如果是选中状态,设置选取中的边框为红色
}
else if(value instanceof String)
setText((String) value);
else
setText("");
return this;
}
}

JTable jTable = new JTable();
DefaultTableModel model = new DefaultTableModel(0, 1);
model.addRow(new Object[] {
new ImageIcon("resources/chatroom/face/smile01.gif")
});
jTable.setModel(model); // 必须在 setCellRenderer 前
TableColumnModel columnModel = jTable.getColumnModel();
for(int c=0; c columnModel.getColumn(c).setCellRenderer(new MyRenderer());
// 为每一列column指定Renderer
}

台南小新 發表在 痞客邦 PIXNET 留言(0) 人氣()