如何在JavaFX8中检查listview是否为空?

如何在JavaFX8中检查listview是否为空?,javafx,Javafx,我有两个列表视图,“第一个列表视图”和“第二个列表视图”。我需要监听“first listview”是否为空,以便我可以自动设置禁用(true)或设置禁用(false)“second listview”。如何使用侦听器实现这一点?这可以通过单个绑定轻松实现 @FXML private ListView<Foo> listViewFoo; @FXML private ListView<Bar> listViewBar; listViewBar.disablePropert

我有两个列表视图,“第一个列表视图”和“第二个列表视图”。我需要监听“first listview”是否为空,以便我可以自动设置禁用(true)或设置禁用(false)“second listview”。如何使用侦听器实现这一点?

这可以通过单个绑定轻松实现

@FXML
private ListView<Foo> listViewFoo;
@FXML
private ListView<Bar> listViewBar;

listViewBar.disableProperty().bind(Bindings.isEmpty(listViewFoo.getItems()));
@FXML
私有ListView listViewFoo;
@FXML
私有ListView listViewBar;
listViewBar.disableProperty().bind(Bindings.isEmpty(listViewFoo.getItems());

如果需要相反的设置,则只需使用
isNotEmpty()
isEmpty()
切换到
isNotEmpty()

即可通过单个绑定轻松实现

@FXML
private ListView<Foo> listViewFoo;
@FXML
private ListView<Bar> listViewBar;

listViewBar.disableProperty().bind(Bindings.isEmpty(listViewFoo.getItems()));
@FXML
私有ListView listViewFoo;
@FXML
私有ListView listViewBar;
listViewBar.disableProperty().bind(Bindings.isEmpty(listViewFoo.getItems());

如果需要相反的设置,那么只需将
isEmpty()
isNotEmpty()

切换,只要
ListView
s
items
列表不被替换,而只是被修改……@fabian-Yup,如果希望调用
setItems()
,那么绑定将更加复杂,但肯定还是有可能的。所以有绑定。。。工作完美。应该开始学习绑定。@fabian,@Jai,在这种情况下,它可以用于该绑定中的
itemsProperty
。它不是那么复杂:)@Sunflame它不是那么简单。。如果这样做,您将不知道在
setItems()
中设置的
ObservableList
何时变为空。您需要将侦听器添加到
itemsProperty()
,这会将另一个侦听器(
ListChangeListener
)添加到新的
ObservableList
,并从旧的
ObservableList
中删除侦听器。好吧,除非当基础
observeListList
无效时
ListProperty
变得无效。只要
ListView
s
items
列表不被替换,而只是被修改,就应该工作…@fabian Yup,如果希望调用
setItems()
,那么绑定将更加复杂,但肯定还是有可能的。所以有绑定。。。工作完美。应该开始学习绑定。@fabian,@Jai,在这种情况下,它可以用于该绑定中的
itemsProperty
。它不是那么复杂:)@Sunflame它不是那么简单。。如果这样做,您将不知道在
setItems()
中设置的
ObservableList
何时变为空。您需要将侦听器添加到
itemsProperty()
,这会将另一个侦听器(
ListChangeListener
)添加到新的
ObservableList
,并从旧的
ObservableList
中删除侦听器。好吧,除非当基础
ObservableList
无效时,
ListProperty
确实无效。