2017-02-10 12 views
1

Я искал какое-то время, и я не нашел ничего, что сработает. Я хочу сделать так, чтобы каждый раз, когда пользователь нажимает на новый клиент в моем списке, детали клиенты представлены в полях (см рисунок ниже):Как прослушать изменение выбора в JavaFX ListView

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 и т. Д.), А не изменение t он выбор. Я новичок в JavaFX так говорить со мной, как я 5 год старый ребенок пожалуйста: P

Спасибо, ребята

ответ

2

Для одиночного выбора:

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

Для множественного выбора:

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