我正在创建一个卡片列表,用户可以从中选择来开始游戏。用户通过卡片名称旁边的复选框来选择卡片,他们只能选择 10 张卡片。我希望能够通过在单击复选框时调用事件处理程序并确定是否允许单击复选框来限制可以选择的复选框的数量。我如何为每个复选框添加一个事件处理程序来做到这一点?如果有更好的方法,我绝对愿意接受建议。这是我设置列表视图和复选框回调的代码:
ListView<Card> cards;
Callback<Card, ObservableValue<Boolean>> checkBoxCallback = new Callback<Card, ObservableValue<Boolean>>() {
@Override
public BooleanProperty call(Card card) {
return card.selectedProperty();
}
};
StringConverter<Card> cardToStringConverter = new StringConverter<Card>() {
@Override
public Card fromString(String card) {
try {
return CardFactory.createCard(card);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
public String toString(Card card) {
return card.toString();
}
};
Callback<ListView<Card>, ListCell<Card>> listViewCallback = CheckBoxListCell.forListView(checkBoxCallback, cardToStringConverter);
cards.setCellFactory(listViewCallback);
cards.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<Card>() {
@Override
public void changed(ObservableValue<? extends Card> obsValue,
Card oldValue, Card newValue) {
cardImageView.setImage(newValue.getCardImage());
}
});