code: @Override
      public TableCellRenderer getCellRenderer(int row, int column) {
          PropertySheetTableModel.Item item = getSheetModel()
                  .getPropertySheetElement(row);
  
          switch (column) {
              case PropertySheetTableModel.NAME_COLUMN:
                  // name column gets a custom renderer
                  return nameRenderer;
  
              case PropertySheetTableModel.VALUE_COLUMN:
                  if (!item.isProperty()) {
                      return nameRenderer;
                  }
  
                  // property value column gets the renderer from the factory
                  Property property = item.getProperty();
                  TableCellRenderer renderer = getRendererFactory().createTableCellRenderer(property);
                  if (renderer == null) {
                      renderer = getCellRenderer(property.getType());
                  }
                  return renderer;
              default:
                  // when will this happen, given the above?
                  return super.getCellRenderer(row, column);
          }
      }
docs: /* (non-Javadoc)
  @see javax.swing.JTable#getCellRenderer(int, int)