2012-06-18 80 views
12

Hola, estoy tratando de establecer el foco en un elemento en una vista de lista. Después de que un usuario abre un archivo, el elemento se agrega a la vista de lista, pero el problema que tengo es que la vista de lista no establece el foco en el nuevo elemento que se agregó. Tengo que hacer clic en el elemento en la vista de lista para establecer el foco en él. ¿Hay alguna manera de tener la vista de lista para resaltar el elemento recién agregado inmediatamente en JavaFX 2.1?JavaFX selecciona el elemento en ListView

+0

estoy utilizando JavaFX 2.1 – user16380

Respuesta

38

Suponiendo que el elemento recién añadido tiene un índice de N,
Seleccionándolo:

listView.getSelectionModel().select(N); 

Centrándose en él:

listView.getFocusModel().focus(N); 

Desplazamiento a la misma:

listView.scrollTo(N); 

Puedes usar combinaciones de estos y pr preferiblemente en Platform.runLater().
de desplazamiento y seleccione:

Platform.runLater(new Runnable() { 

    @Override 
    public void run() { 
     listView.scrollTo(N); 
     listView.getSelectionModel().select(N); 
    } 
}); 
+0

Muchas gracias. Funcionó perfectamente. – user16380

+0

Tuve el mismo problema al utilizar Java 8 y la solución fue ejecutar la selección después de que haya transcurrido un tiempo una vez que se actualizó listView: 'FxTimer.runLater (Duration.ofMillis (250),() -> listView.getSelectionModel(). select (selectedItem)); ' – Harry244

Cuestiones relacionadas