3

我正在尝试通过指定我自己的表格单元格渲染器来将图标添加到特定的 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. 应该只有一个图标的单元格 MyTableModel.IMAGE_COLUMN 也有文本。

提前致谢

4

1 回答 1

4

出于更好的性能原因,JTable 对其呈现的每个单元格重复使用相同的标签。这意味着您每次更改时都需要设置文本和图标。

字体、背景色等也是如此

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

应该做的伎俩,

于 2009-08-18T05:34:48.477 回答