如果在 ListView JavaFx 中选择了项目

0 java javafx

如果我有一个列表和一个按钮。我希望在选择该列表中的项目之前禁用该按钮,最好的方法是什么?

Sla*_*law 5

ListView有一个名为的属性selectionModel,其中包含一个MultipleSelectionModel对象。此选择模型具有表示选择了哪些项目(如果有)的属性/列表。此选择模型有两种模式:

  1. SINGLE:一次只能选择一项。
  2. MULTIPLE:一次可以选择任意数量的项目。

您使用的选择模式可能很重要,但我并不乐观。对于单选,我会观察selectedItemorselectedIndex属性。对于多选,我会观察selectedItemsor selectedIndices ObservableList。(注意:虽然我并不乐观,但无论选择模式如何,我都希望任何一种方法都能工作

// single selection mode
button.disableProperty()
        .bind(listView.getSelectionModel().selectedItemProperty().isNull());

// multiple selection mode
button.disableProperty()
        .bind(Bindings.isEmpty(listView.getSelectionModel().getSelectedItems()));
Run Code Online (Sandbox Code Playgroud)

第一个选项使用属性的isNull方法selectedItem。该方法返回一个BooleanBinding绑定 的disable属性Button

第二个选项使用Bindings.isEmptywhich 创建一个BooleanBindingtrueObservableList为空时。与第一个选项一样,该disable属性绑定到 this BooleanBinding