Saltar al contenido

javafx: hacer que ListView no se pueda seleccionar con el mouse

este problema se puede abordar de variadas formas, pero te mostramos la que en nuestra opinión es la respuesta más completa.

Solución:

Establecer la lista para que sea transparente para el mouse también evitará que las celdas con celdas de lista personalizadas interactuables acepten el foco.

La solución ideal es utilizar un modelo de selección especial:

import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.control.MultipleSelectionModel;

public class NoSelectionModel extends MultipleSelectionModel 

    @Override
    public ObservableList getSelectedIndices() 
        return FXCollections.emptyObservableList();
    

    @Override
    public ObservableList getSelectedItems() 
        return FXCollections.emptyObservableList();
    

    @Override
    public void selectIndices(int index, int... indices) 
    

    @Override
    public void selectAll() 
    

    @Override
    public void selectFirst() 
    

    @Override
    public void selectLast() 
    

    @Override
    public void clearAndSelect(int index) 
    

    @Override
    public void select(int index) 
    

    @Override
    public void select(T obj) 
    

    @Override
    public void clearSelection(int index) 
    

    @Override
    public void clearSelection() 
    

    @Override
    public boolean isSelected(int index) 
        return false;
    

    @Override
    public boolean isEmpty() 
        return true;
    

    @Override
    public void selectPrevious() 
    

    @Override
    public void selectNext() 
    

Luego configure el modelo en la vista de lista:

listView.setSelectionModel(new NoSelectionModel());

También puedes probar:

listview.setMouseTransparent( true );
listView.setFocusTraversable( false );

Puede bloquear su vista de lista con el clic del mouse comprar usando el controlador de eventos

listview.addEventFilter(MouseEvent.MOUSE_PRESSED, new EventHandler() 

            @Override
            public void handle(MouseEvent event) 
                System.out.println(">> Mouse Clicked");
                event.consume();
            
        );

Tienes la opción de asistir nuestra faena dejando un comentario o dejando una valoración te lo agradecemos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *