Recentemente eu aprendi a usar checkbox dentro de uma listview, porem eu preciso checar quando a pessoa seleciona a checkbox, pretendo que na 2 vez que a pessoa selecionar a checkbox vai ser bloqueada e ela não poderá selecionar novamente e também não poderá selecionar esse item na listview (meio que um disable)
Eu usei esse código para colocar as checkbox
private static class ListEntry {
private BooleanProperty selected;
private StringProperty text;
public ListEntry(String text) {
this.selected = new SimpleBooleanProperty();
this.text = new SimpleStringProperty(text);
}
public BooleanProperty selectedProperty() {
return selected;
}
public StringProperty textProperty() {
return text;
}
@Override
public String toString() {
return textProperty().get();
}
}
Para preencher (eu puxo direto do banco de dados) eu uso esse procedimento:
private void listFill(){
ObservableList<ListEntry> items = FXCollections.observableArrayList();
lvJogadoresTime.setCellFactory(
CheckBoxListCell.forListView(ListEntry::selectedProperty)
);
for (int n1 = 0; n1 < ConsultasAvaliacao.jogadoreS.size(); n1++){
items.add(new ListEntry(ConsultasAvaliacao.jogadoreS.get(n1)));
}
lvJogadoresTime.setItems(items);
lvJogadoresTime.itemsProperty().addListener(c -> new ChangeListener<ListEntry>(){
//Aki é onde estou tentando fazer o evento da checkbox ,porem nao funciona
//Não apresenta erros no console apenas não funciona
@Override
public void changed(ObservableValue<? extends ListEntry> observable, ListEntry oldValue, ListEntry newValue) {
System.out.println("Selected ? " + newValue.selected + " player " + newValue.text);
}
});
}
Como eu deixei escrito no código:
@Override
public void changed(ObservableValue<? extends ListEntry> observable, ListEntry oldValue, ListEntry newValue) {
System.out.println("Selected ? " + newValue.selected + " player " + newValue.text);
}
});
Eu tentei esse procedimento ^ para criar o evento para a checkbox, porém não funciona, por favor me ajudem.
