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