public void paint(Graphics g) {
   Dimension size = getSize();
   int index = 0;
   if (column == viewIndexForColumn(header.getDraggedColumn())) {
     index = 2;
   } else if (isSelected || hasFocus || hasRollover) {
     index = 1;
   }
   skin.paintSkin(g, 0, 0, size.width - 1, size.height - 1, index);
   super.paint(g);
 }
 @Override
 public Component getTableCellRendererComponent(
     JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
   super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
   String str = Objects.toString(value, "");
   if (highlighter.isHighlightableCell(row, column)) {
     setText("<html><u>" + str);
     setForeground(isSelected ? table.getSelectionForeground() : HIGHLIGHT);
     setBackground(isSelected ? table.getSelectionBackground().darker() : table.getBackground());
   } else {
     setText(str);
     setForeground(isSelected ? table.getSelectionForeground() : table.getForeground());
     setBackground(isSelected ? table.getSelectionBackground() : table.getBackground());
   }
   return this;
 }