JavaFX8:ListView中的CheckboxListCell在滚动时取消选中单元格

时间:2018-04-16 11:02:00

标签: java listview javafx checkbox event-handling

我会尽量保持简短,底部有更多信息。

我正在努力获得一个包含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的值已经改变。

0 个答案:

没有答案