myButton.disableProperty().bind(
Bindings.isNull(myListView.getSelectionModel().selectedItemProperty())
);
对于您的标签,您可以执行类似操作
myLabel.textProperty().bind( Bindings.createStringBinding(() -> { // arbitrary logic here... var selectedItem = myListView.getSelectionModel().getSelectedItem() ; if (selectedItem == null) { return "" ; } else { return "some other string" ; } }), myListView.getSelectionModel().selectedItemProperty() );
所有这些代码都可以放入控制器的initialize()
方法中。如果您有很多,那么改用监听器可能会更干净:
myListView.getSelectionModel().selectedItemProperty().addListener((obs, oldSelection, newSelection) -> { // update everything based on the value of newSelection, // which will be null if nothing is selected });
请注意,在此版本中,您必须单独确保将所有内容初始化为正确的状态(默认情况下,列表视图中不会选择任何内容,因此,如果选择为null,则将所有内容初始化为所需的状态)。 /