void setSelectedRowAndNavigate(int row) {
		if (row < 0 || table.getRowCount() <= row) {
			// 'row' is sometimes invalid as strings get made in the background
			return;
		}

		table.setRowSelectionInterval(row, row);
		Rectangle rect = table.getCellRect(row, 0, true);
		table.scrollRectToVisible(rect);

		if (!selectionNavigationAction.isSelected()) {
			return; // only navigate if the action is selected
		}

		// force navigation; navigation usually happens when selections take place, but this
		// component has widgets that take focus, which interferes with the table's navigation
		if (!table.isFocusOwner()) {
			table.navigate(row, 0);
		}
	}
Sets the given row as a selection in the table.  Note, this method assumes that the given
row was obtained by getting the selected row from the table and not somehow
obtained from the model.

@param row the row in the table to select
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/string/StringTableProvider.java