void (ListCellRenderer renderer) { myRenderer = renderer; setDefaultRenderer(Object.class, new TableCellRenderer() { @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { final int index = getModel().toListIndex(row, column); if (isSelected) { myList.addSelectionInterval(index, index); } else { myList.removeSelectionInterval(index, index); } return myRenderer.getListCellRendererComponent(myList, value, index, isSelected, hasFocus); } }); }