我试图通过指定我自己的表格单元格渲染器来将图标添加到特定的 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;
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码可以工作,但是:
提前致谢
出于更好的性能原因,JTable 为其呈现的每个单元重复使用相同的标签。这意味着每次更改时都需要设置文本和图标。
字体、背景颜色等也是如此
if(icon == null){
label.setText(status);
label.setIcon(null);
}else{
label.setText("");
label.setIcon(icon);
}
Run Code Online (Sandbox Code Playgroud)
应该做到这一点,
| 归档时间: |
|
| 查看次数: |
10604 次 |
| 最近记录: |