如何在JavaFX8中检查listview是否为空?
我有两个列表视图,“第一个列表视图”和“第二个列表视图”。我需要监听“first listview”是否为空,以便我可以自动设置禁用(true)或设置禁用(false)“second listview”。如何使用侦听器实现这一点?这可以通过单个绑定轻松实现如何在JavaFX8中检查listview是否为空?,javafx,Javafx,我有两个列表视图,“第一个列表视图”和“第二个列表视图”。我需要监听“first listview”是否为空,以便我可以自动设置禁用(true)或设置禁用(false)“second listview”。如何使用侦听器实现这一点?这可以通过单个绑定轻松实现 @FXML private ListView<Foo> listViewFoo; @FXML private ListView<Bar> listViewBar; listViewBar.disablePropert
@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
sitems
列表不被替换,而只是被修改……@fabian-Yup,如果希望调用setItems()
,那么绑定将更加复杂,但肯定还是有可能的。所以有绑定。。。工作完美。应该开始学习绑定。@fabian,@Jai,在这种情况下,它可以用于该绑定中的itemsProperty
。它不是那么复杂:)@Sunflame它不是那么简单。。如果这样做,您将不知道在setItems()
中设置的ObservableList
何时变为空。您需要将侦听器添加到itemsProperty()
,这会将另一个侦听器(ListChangeListener
)添加到新的ObservableList
,并从旧的ObservableList
中删除侦听器。好吧,除非当基础observeListList
无效时ListProperty
变得无效。只要ListView
sitems
列表不被替换,而只是被修改,就应该工作…@fabian Yup,如果希望调用setItems()
,那么绑定将更加复杂,但肯定还是有可能的。所以有绑定。。。工作完美。应该开始学习绑定。@fabian,@Jai,在这种情况下,它可以用于该绑定中的itemsProperty
。它不是那么复杂:)@Sunflame它不是那么简单。。如果这样做,您将不知道在setItems()
中设置的ObservableList
何时变为空。您需要将侦听器添加到itemsProperty()
,这会将另一个侦听器(ListChangeListener
)添加到新的ObservableList
,并从旧的ObservableList
中删除侦听器。好吧,除非当基础ObservableList
无效时,ListProperty
确实无效。