2015-10-06 4 views
-2

У меня проблема с моим элементом TableView. Я добавление слушателя так:JavaFx TableView itemProperty не уведомляет ChangeListener

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

checker.hardwareIdCompleted является BooleanProperty. Я проверил в отладчике, и новые элементы были добавлены в TableView, но hardwareIdCompleted все еще сопротивляется 'false'.

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

Что вы пытаетесь сделать? Что указывает аппаратное обеспечение? Если вы хотите отслеживать пустоту таблицы, вы можете попробовать booleanProperty.bind (Bindings.isNotEmpty (tableiew.getItems())); –

+0

Хорошо, спасибо. Я попробую. Но мне интересно, почему это решение не работает?! – Constantine

+0

На мой простой тест. Он работает так, как ожидалось. Вызывается прослушиватель, и размер списка увеличивается при добавлении элемента. –

ответ

0

Неисправность была прямой - моя функция сброса назначен новый список TableView. Поскольку слушатель был назначен списку старых элементов, он не получает уведомления, когда я ожидал.

+1

Именно поэтому вы всегда должны отправлять сообщение [MCVE] в свой вопрос. –

Смежные вопросы