I’m trying to add an icon to a particular JTable column by specifying my own table cell renderer as below (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;
}
}
The above code works but:
- All cell have the icon instead of
the specific one i want specified in
the if statement - Cell MyTableModel.IMAGE_COLUMN which
should only have an icon also has
text.
Thanks in advance
For better performance reasons JTable reuses the same label for each cell it renders.
This means you need to set both text and icon each time you change it.
The same goes for fonts, backgroundcolors and the like
should do the trick,