Component (@NotNull TableCellRenderer renderer, int row, int column) { Component result = super.prepareRenderer(renderer, row, column); if (result instanceof JComponent component && !isCellSelected(row, column)) { if (isStriped()) { if (isTableDecorationSupported()) { setRendererBackground(component, row % 2 == 1 ? getBackground() : ObjectUtils.chooseNotNull(getStripeColor(), getBackground())); } } else { Color hovered = isHoverPaintingDisabled(this) ? null : getHoveredRowBackground(); if (hovered != null) { if (row == TableHoverListener.getHoveredRow(this)) { setRendererBackground(component, hovered); } else { forEachComponent(component, child -> { // reset hovered background only if it was not cleared properly if (hovered == child.getBackground()) child.setBackground(getBackground()); }); } } } } if (myExpandableItemsHandler.getExpandedItems().contains(new TableCell(row, column))) { result = ExpandedItemRendererComponentWrapper.wrap(result); } if (renderer instanceof JCheckBox) { ((JCheckBox)renderer).getModel().setRollover(rollOverCell != null && rollOverCell.at(row, column)); } return result; }