Моя проблема - использование логического значения.TableView требуется BooleanProperty
Вы не правы.На самом деле TableView
никогда не получает доступа к объекту BooleanProperty
, хранящемуся в поле active
его элементов.
PropertyValueFactory
использует отражение для
- Доступ к свойствуобъект, вызывая метод с параметром конструктора, сцепленным с
"Property"
.(Этот метод будет называться activeProperty()
в вашем случае.) - Если вышеупомянутое не работает, оно оборачивает значение, возвращаемое получателем для свойства в
ObservableValue
.(Имя получателя в этом случае getActive()
или isActive
).
В вашем случае cellValueFactory
делает что-то похожее на следующую фабрику
modulActiveColumn.setCellValueFactory(cellData -> new SimpleBooleanProperty(cellData.getValue().isActive()));
Использование поля boolean
для хранения данных дает точно такой же результат в вашем случае.Недостатком этого подхода является то, что программные обновления свойства не запускают обновление TableView
, и изменения необходимо обрабатывать вручную.
@Root(name="scriptdata")
@Order(elements={"title", "active"})
public class ScriptData {
@Element (required=true)
private String title;
@Element (required=false)
private boolean active;
/**
*
* @param title
* @param active
*/
public ScriptData() {
}
public boolean isActive() {
return active;
}
public void setActive(boolean active) {
this.active = active;
}
}