2015-07-23 2 views

Répondre

12

Ils peuvent être liés à la classe Bindings:

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

La réponse acceptée est correcte. Je fournirai un aperçu supplémentaire pour le bénéfice des lecteurs intéressés.

ObservableList est une interface et en tant que telle ne tient pas une propriété size. ListExpression est une classe abstraite et la mise en œuvre ObservableList ajoutant ReadOnlyIntegerProperty size et ReadOnlyBooleanProperty empty propriétés. Cette classe est la classe de base d'un arbre d'héritage entier de classes de propriétés de liste.

La plupart des utilisateurs ne voudront pas sous-classe les classes abstraites dans l'arbre eux-mêmes, donc nous allons examiner la mise en œuvre concrète fourni:

ListExpression     (abstract) 
- ReadOnlyListProperty   (abstract) 
    - ListProperty    (abstract) 
     - ListPropertyBase   (abstract) 
     - SimpleListProperty 
      - ReadOnlyListWrapper 

SimpleListProperty est, comme son nom l'indique, un simple propriété de liste - un ObservableList enveloppé dans un Property. C'est le parallèle de l'autre SimpleXxxProperty s. Il a également une sous-classe ReadOnlyListWrapper pour gérer les exigences de lecture seule et de lecture-écriture. Il peut être construit à partir d'un ObservableList:

SimpleListProperty<String> list = new SimpleListProperty<>(FXCollections.observableArrayList()); 
IntegerProperty intProperty = new SimpleIntegerProperty(); 
intProperty.bind(list.sizeProperty()); 

Les utilisateurs qui ont besoin des avantages de cette classe (plus juste en utilisant ObservableList) et décident de l'utiliser ne pas besoin de l'approche Bindings#size statique.

+1

Bonne réponse !! La première fois que j'ai vu 'ListExpression' https://docs.oracle.com/javase/8/javafx/api/javafx/beans/binding/ListExpression.html – GOXR3PLUS

+0

@ GOXR3PLUS Vous ne verrez probablement jamais" ListExpression "dans le code puisqu'il est niveau très bas et peu auront besoin de l'utiliser directement. 'SimpleListProperty' et' ReadOnlyListWrapper', d'un autre côté, sont très utiles, prêts à l'emploi. – user1803551

+0

Déjà ajouté dans le code :). J'ai besoin de lier la valeur maximale d'un ScrollBar à la taille d'une 'Observable List - 1' – GOXR3PLUS