【发布时间】:2013-11-10 07:11:18
【问题描述】:
我正在创建一个可供用户选择以开始游戏的卡片列表。用户通过卡片名称旁边的复选框来选择卡片,他们只能选择 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());
}
});
【问题讨论】:
-
你不能使用静态全局变量来计算所检查的卡片,你也可以检查计数变量是否小于 10..??这将是我的选择
-
我如何知道在没有附加事件处理程序的情况下单击复选框?
标签: java user-interface checkbox event-handling javafx