我会尽量保持简短,底部有更多信息。
我正在努力获得一个包含CheckBoxes的ListView。我有一个GUI应用程序,并希望有一个简洁的紧凑视图,以便用户可以从列表中选择多个选项,同时“编辑”他们的“配置文件”信息,而不会占用整个屏幕的列表。所以我选择了带CheckBoxListCell的ListView。我能够很好地初始化列表,并且检查/取消选中选项会触发想要的事件,但是当我向下滚动列表并向上滚动时,未选中先前选中的框,并且不会触发任何事件,表明这不是更改事件滚动时发生。这是一个错误还是我在初始化时遗漏了什么?
以下是与初始化ListView相关的代码:
private void setOrgansListed(Boolean editing) {
ObservableList<OrganEnum> listedOrgs = FXCollections.observableArrayList();
if (editing) {
System.out.println("Editing");
listedOrgs.setAll(OrganEnum.values());
organsListed.setItems(listedOrgs);
organsListed.setCellFactory(CheckBoxListCell.forListView(param -> {
BooleanProperty observable = new SimpleBooleanProperty();
observable.addListener(((obs, wasSelected, isSelected) -> {
GuiUndoController.add(new Tuple<>("organ", organsListed));
}));
return observable;
}));
This is a picture of the ListView in the GUI
扩展信息: 我是Java和JavaFX的新手。 我尝试过使用controlsFX CheckListView,但是在重置CheckListView之后,有一个已知的错误阻止事件处理程序绑定。我需要事件处理程序来触发并保存List的状态,以便用户可以撤消更改。我还发现了一个与此问题相同的问题here,但没有提供适当的解决方案,或者我遗漏了一些问题。
为了确保我的问题清楚:我勾选列表中的“肝脏”,滚动查看列表中的其他项目,然后当我向上滚动“肝脏”未选中时,未触发任何更改事件以指示CheckBox的值已经改变。