我正在尝试通过指定我自己的表格单元格渲染器向特定的 JTable 列添加一个图标,如下所示 (based on parts of this tutorial):
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;
}
}
上面的代码有效但是:
- 所有单元格都有图标而不是 我想要指定的具体一个 if语句
- 单元格 MyTableModel.IMAGE_COLUMN 其中 应该只有一个图标也有 文本。
提前致谢
最佳答案
出于更好的性能原因,JTable 对其呈现的每个单元格重复使用相同的标签。 这意味着每次更改时都需要设置文本和图标。
字体、背景颜色等也是如此
if(icon == null){
label.setText(status);
label.setIcon(null);
}else{
label.setText("");
label.setIcon(icon);
}
应该可以,
关于java - 通过覆盖 DefaultTableCellRenderer 将图标添加到 JTable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1291948/