【问题标题】:JavaFX make listView cells unselectebleJavaFX 使 listView 单元格无法选择
【发布时间】:2017-11-12 11:36:50
【问题描述】:

我找不到使 ListViews 的单元格无法选择的方法。

我有一个带有自定义单元格的 ListView,里面有一些按钮,我想制作它,这样您就无法选择单元格,但可以使用按钮。我想像listView.setSelectable;listView.setSelectionModel(SelectionMode.NONE); 这样的东西,但没有这样的东西!

【问题讨论】:

    标签: listview javafx


    【解决方案1】:

    即使没有不允许选择任何项目的现有选择模型实现,您也可以自己实现一个:

    public class EmptySelectionModel<T> extends MultipleSelectionModel<T> {
    
        // since this list is empty and unmodifiable, it's safe to use it as
        // both index and item list
        private ObservableList emptyList = FXCollections.emptyObservableList();
    
        @Override
        public ObservableList<Integer> getSelectedIndices() {
            return emptyList;
        }
    
        @Override
        public ObservableList<T> getSelectedItems() {
            return emptyList;
        }
    
        // just do nothing instead of selecting/unselecting anything
    
        @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 void selectPrevious() {
        }
    
        @Override
        public void selectNext() {
        }
    
        @Override
        public boolean isSelected(int index) {
            return false; // no items are selected
        }
    
        @Override
        public boolean isEmpty() {
            return true; // selection is always empty
        }
    
    }
    
    listView.setSelectionModel(new EmptySelectionModel<>());
    

    【讨论】:

    • hmm .. list.setSelectionModel(null) 怎么样?
    • @kleopatra 空选择模型有效,但在单击时抛出 NullPointerException(它不执行任何操作)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-19
    • 1970-01-01
    • 2016-02-28
    • 2012-09-09
    • 1970-01-01
    相关资源
    最近更新 更多