JavaFX使listView单元格不可选择 我找不到使ListView的单元格不可选择的方法。

JavaFX使listView单元格不可选择 我找不到使ListView的单元格不可选择的方法。,listview,javafx,Listview,Javafx,我有一个自定义单元格的ListView,里面有一些按钮,我想创建它,这样您就不能选择单元格,但可以使用按钮。我会想象类似于listView.setSelectable或列表视图.setSelectionModel(SelectionMode.NONE),但没有这样的东西 即使没有不允许选择任何项目的现有选择模型实现,您也可以自己实现一个: public class EmptySelectionModel<T> extends MultipleSelectionModel<T&g

我有一个自定义单元格的ListView,里面有一些按钮,我想创建它,这样您就不能选择单元格,但可以使用按钮。我会想象类似于
listView.setSelectable
列表视图.setSelectionModel(SelectionMode.NONE),但没有这样的东西

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

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
    }

}
公共类EmptySelectionModel扩展了MultipleSelectModel{
//由于此列表为空且不可修改,因此可以安全地将其用作
//索引和项目列表
private ObservableList emptyList=FXCollections.emptyObservableList();
@凌驾
公共观察列表getSelectedIndices(){
返回空列表;
}
@凌驾
公共观察列表getSelectedItems(){
返回空列表;
}
//什么都不做,而不是选择/取消选择任何内容
@凌驾
公共索引(整数索引、整数…索引){
}
@凌驾
public void selectAll(){
}
@凌驾
public void selectFirst(){
}
@凌驾
public void selectLast(){
}
@凌驾
公共无效清除和选择(整数索引){
}
@凌驾
公共无效选择(整数索引){
}
@凌驾
公共作废选择(T obj){
}
@凌驾
公共选举(整数索引){
}
@凌驾
公共选举(){
}
@凌驾
public void selectPrevious(){
}
@凌驾
public void selectNext(){
}
@凌驾
公共布尔值(整数索引){
return false;//未选择任何项目
}
@凌驾
公共布尔值为空(){
return true;//所选内容始终为空
}
}
listView.setSelectionModel(新的EmptySelectionModel());

hmm。。那list.setSelectionModel(null)呢?@kleopatra null选择模型可以工作,但在单击时抛出NullPointerException(它不做任何事情)。
listView.setSelectionModel(new EmptySelectionModel<>());