如何在JavaFX ListView中侦听选择更改

时间:2017-02-10 20:48:37

标签: java listview javafx scenebuilder observablelist

我一直在寻找一段时间,但我找不到任何有用的东西。我希望这样做,以便每次用户点击列表中的新客户端时,客户端详细信息都会显示在字段中(请参见下面的屏幕截图):

Client screen

在我找到一些无法正常工作的解决方案后,这是我到目前为止的基本代码:

@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可以监听列表中的更改(add, rmove等),而不是选择的变化。我是JavaFX的新手所以请跟我说话,好像我是一个5岁的孩子,请:P

谢谢你们

1 个答案:

答案 0 :(得分:4)

单选:

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

进行多项选择:

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