如何将值绑定到ObservableList的大小?

时间:2015-07-23 18:10:31

标签: java javafx javafx-bindings

我希望将值绑定到ObservableList的大小以了解其大小,并知道它是否具有多个值

private ObservableList<String> strings = FXCollections.observableArrayList();

2 个答案:

答案 0 :(得分:15)

他们可以与Bindings类绑定:

ObservableList<String> strings = FXCollections.observableArrayList();
IntegerBinding sizeProperty = Bindings.size(strings);
BooleanBinding multipleElemsProperty = new BooleanBinding() {
    @Override protected boolean computeValue() {
        return strings.size() > 1;
    }
};

答案 1 :(得分:5)

接受的答案是正确的。我将为感兴趣的读者提供额外的见解。

ObservableList  是一个接口,因此不具有<div class="form-group" style="margin-top: 20px;" ng-repeat="row in skuDetails"> <label class="checkbox-inline"> <input type="radio" name="amount_{{$index}}" ng-model="row.amount" ng-value="row.reductionAmount != ''">Reduction Amount </label> <label class="checkbox-inline" style="padding-left: 0px;"> <input type="text" name="reductiontext" value="" ng-model="row.reductionAmount" style="width: 80px;"> </label> <label class="checkbox-inline" style="padding-left: 0px;"> <input type="radio" name="percentage_{{$index}}" value="percentage" ng-model="row.amount">Reduction Percentage </label> <label class="checkbox-inline" style="padding-left: 0px;"> <input type="text" name="reductiontext" value="" ng-model="row.reductionPercentage" style="width: 80px;"> </label> </div> 属性。  ListExpression  是一个实现size并添加ReadOnlyIntegerProperty size的抽象类  和  ReadOnlyBooleanProperty empty  属性。此类是列表属性类的整个继承树的基类。

大多数用户不希望自己在树中继承抽象类,因此我们将查看提供的具体实现:

ObservableList

SimpleListProperty  顾名思义,它是一个简单的列表属性 - ListExpression (abstract) - ReadOnlyListProperty (abstract) - ListProperty (abstract) - ListPropertyBase (abstract) - SimpleListProperty - ReadOnlyListWrapper 包裹在ObservableList中。它是其他Property的并行。它还有一个子类  ReadOnlyListWrapper  处理只读和读写要求。它可以从SimpleXxxProperty

构建
ObservableList

需要此类优势(仅使用SimpleListProperty<String> list = new SimpleListProperty<>(FXCollections.observableArrayList()); IntegerProperty intProperty = new SimpleIntegerProperty(); intProperty.bind(list.sizeProperty()); )并决定使用它的用户不需要静态Bindings#size方法。