ユーザーがゲームを開始するために選択できるカードのリストを作成しています。ユーザーはカード名の横にあるチェックボックスでカードを選択し、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());
}
});