La primera fila siempre se selecciona al enfocar un TableView o TreeView en una aplicación JavaFX

Me di cuenta de que todos los tableViews y treeViews en mi aplicación JavaFX seleccionan la primera fila tan pronto como se enfocan. Como resultado, incluso cuando hago clic en la barra de desplazamiento correspondiente, se seleccionará la primera fila. Como, por supuesto, no quiero tener ese comportamiento, me gustaría preguntar si hay alguna forma de evitar este comportamiento.

EDITAR: agregué un ejemplo simple que crea dos listas humildes. Aquí, tan pronto como se hace clic en una fila vacía, se selecciona la primera fila.

EDITAR 2: se agregaron dos oyentes pequeños al código, para que el problema sea repetible sin reiniciar la aplicación.

package testlistview;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.ListView;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;

public class TestListView extends Application {

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) throws Exception {
        HBox root = new HBox();
        root.setSpacing(10);

        Scene primaryStageScene = new Scene(root);
        primaryStage.setScene(primaryStageScene);

        ListView<String> l1 = new ListView();
        l1.getItems().addAll("a", "b", "c", "d", "e", "f", "g");
        ListView<String> l2 = new ListView();
        l2.getItems().addAll("1", "2", "3", "4", "5", "6", "7");
        root.getChildren().addAll(l1, l2);

        l1.setOnMouseClicked((MouseEvent e) -> {
            l2.getSelectionModel().clearSelection();
        });

        l2.setOnMouseClicked((MouseEvent e) -> {
            l1.getSelectionModel().clearSelection();
        });

        primaryStage.show();
    }
}

EDITAR 3: Me di cuenta de que la primera fila también se selecciona cuando estoy ordenando una tabla. Sin embargo, para evitar esto, creé un pequeño truco (que probablemente sea un estilo muy malo, pero funciona por ahora).

  private boolean sorted = false;

// (...)

    tableView.addEventFilter(MouseEvent.MOUSE_PRESSED,
                            new EventHandler<MouseEvent>() {
                                public void handle(MouseEvent e) {
                                    if (!tableView.isFocused()) {
                                        if (e.getPickResult().getIntersectedNode() instanceof Label) {
                                            sorted = true;
                                        }

                                    }
                                }
                            ;
                    });

    tableView.focusedProperty().addListener((a,b,c) -> {
                if(!tableView.isPressed() || sorted) {
                    tableView.getSelectionModel().clearSelection();
                    sorted = false;
                }
            });

Entonces aquí el eventFilter se activa antes que el oyente. Por lo que puedo ver, solo el encabezado es, por ejemplo, Label. Como resultado, cada vez que se hace clic en el encabezado primero, la selección se borra.

Sin embargo, como se analiza en la publicación a continuación, supongo que el error desaparecerá con la próxima versión de Java.

Respuestas a la pregunta(2)

Su respuesta a la pregunta