通过重写DefaultTableCellRenderer将图标添加到JTable

我正在尝试通过指定我自己的表格单元格渲染器( 根据本教程的部分内容 )将图标添加到特定的JTable列:

public class MyTableCellRenderer extends DefaultTableCellRenderer { public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { JLabel label = (JLabel)super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); if(column == MyTableModel.IMAGE_COLUMN){ String status = (String)value; Icon icon = StatusImageUtil.getStatusIcon(status); if(icon == null){ label.setText(status); }else{ label.setIcon(icon); } } return label; } } 

上面的代码有效但是:

  1. 所有单元格都有图标,而不是我想在if语句中指定的特定图标
  2. Cell MyTableModel.IMAGE_COLUMN只应该有一个图标也有文本。

提前致谢

为了更好的性能原因,JTable为它呈现的每个单元重用相同的标签。 这意味着每次更改时都需要设置文本和图标。

字体,背景颜色等也是如此

  if(icon == null){ label.setText(status); label.setIcon(null); }else{ label.setText(""); label.setIcon(icon); } 

应该做的,