JavaFx TableView itemProperty不通知ChangeListener

时间:2015-10-06 10:46:56

标签: java javafx-8

我的TableView元素有问题。我添加了这样的听众:

HardwareIdTableView.getItems().addListener(
        (ListChangeListener.Change<? extends FirmwareData.HardwareIdWrapper> change) -> {
            checker.hardwareIdCompleted.setValue(change.getList().size() > 0);
        });

checker.hardwareIdCompleted 是BooleanProperty。 我检查了调试器,并且新项目已添加到TableView中,但 hardwareIdCompleted 仍然拒绝错误&#39;。

P.S。 我像这样向TableView添加项目:

public void addHardwareKey(HardwareIdKeyT key) {
    ObservableList<FirmwareData.HardwareIdWrapper> idKeys = HardwareIdTableView.getItems();

    if (idKeyEditSelected != null) {
        fwData.removeHardwareIdKey(idKeyEditSelected.getIdPattern());
        idKeys.remove(idKeyEditSelected);
    }

    if (!idKeys.contains(key)) {
        HardwareIdTitledPane.pseudoClassStateChanged(PseudoClass.getPseudoClass("pane-error"), false);
        idKeys.add(new FirmwareData.HardwareIdWrapper(key));
        fwData.addHardwareIdKey(key);
    }
}

1 个答案:

答案 0 :(得分:0)

故障是直的 - 我的重置功能为TableView分配了新列表。由于听众被分配到旧项目列表,因此在我预期时它没有收到通知。