void (@NotNull JTable table, int rowNew) { int rowOld = getHoveredRow(table); if (rowNew == rowOld) return; table.putClientProperty(HOVERED_ROW_KEY, rowNew < 0 ? null : rowNew); // tables without scroll pane do not repaint rows correctly (BasicTableUI.paint:1868-1872) if (table.getParent() instanceof JViewport) { repaintRow(table, rowOld); repaintRow(table, rowNew); } else { table.repaint(); } }