javafx - make ListView not selectable via mouse

前端 未结 7 2190
执念已碎
执念已碎 2020-12-20 16:33

Is there an option in JavaFX to deactivate the possibility to select the items in a ListView via mouse?

I\'d like to just display a ListView

7条回答
  •  别那么骄傲
    2020-12-20 17:08

    Setting the list to mouse transparent will also prevent cells with interactable custom list cells from accepting focus.

    The ideal solution is to use a special selection model:

    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() {
        }
    }
    

    Then set the model in the list view:

    listView.setSelectionModel(new NoSelectionModel());
    

提交回复
热议问题