仅当在ListView上选择一个项目时,如何填充字段并启用按钮[关闭]

问题描述 投票:-1回答:1
所以,我正在创建照片库。我有一张照片的列表视图,下面带有照片标签,例如名称和日期,以及旁边的按钮,您可以重命名照片。但是,我希望禁用所有这些按钮,并且如果没有选择任何内容,则清除标签。我在控制器以及JavaFX中如何以及在哪里进行操作(顺便说一下,我正在使用SceneBuilder)?
java javafx scenebuilder
1个回答
2
投票
在列表的选择模型上使用绑定:

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,则将所有内容初始化为所需的状态)。 /
© www.soinside.com 2019 - 2024. All rights reserved.