如何在JavaFX ListView中监听选择变化

7

我已经搜索了一段时间,但仍然没有找到有效的解决方案。我希望实现以下功能:每当用户在我的列表中单击一个新客户端时,该客户端的详细信息将显示在字段中(请参见下面的屏幕截图):

客户端屏幕

在尝试了许多在网上找到的无效解决方案之后,这是我目前的基本代码:

@FXML
private ListView<Client> clientList;
private ObservableList clientObservableList;

@Override
public void initialize(URL url, ResourceBundle rb) {
    this.initializeGymState();//this loads in some dummy clients
    clientObservableList = FXCollections.observableArrayList(gym.getClients());
    clientList.getItems().setAll(clientObservableList);
    clientList.getSelectionModel().selectFirst();
    this.clientDisplayDetails();//this displays the client details, works fine
}

我甚至不知道从这个解决方案从哪里开始,我将ObservableList放在那里的原因是因为我希望使用ListChangeListener,但现在我认为ListChangeListener只能监听列表(添加,删除等)的更改,而不能监听选择的更改。我对JavaFX还很陌生,请像对待一个5岁小孩一样和我交流: P

谢谢大家

1个回答

12

对于单选:

clientList.getSelectionModel().selectedItemProperty().addListener(...);

对于多项选择:

clientList.getSelectionModel().getSelectedItems().addListener(...);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接