La risposta accettata è corretta. Fornirò ulteriori informazioni a beneficio dei lettori interessati.
ObservableList
è un'interfaccia e come tale non contiene una proprietà size
. ListExpression
è una classe astratta attuazione ObservableList
e aggiungendo ReadOnlyIntegerProperty size
e ReadOnlyBooleanProperty empty
proprietà. Questa classe è la classe base per un intero albero ereditario delle classi delle proprietà dell'elenco.
maggior parte degli utenti non vorranno sottoclasse le classi astratte nell'albero stessi, quindi vedremo l'attuazione concreta condizione:
ListExpression (abstract)
- ReadOnlyListProperty (abstract)
- ListProperty (abstract)
- ListPropertyBase (abstract)
- SimpleListProperty
- ReadOnlyListWrapper
SimpleListProperty
è, come suggerisce il nome, una semplice proprietà lista - un ObservableList
avvolto in un Property
. È il parallelo degli altri SimpleXxxProperty
s. Ha anche una sottoclasse ReadOnlyListWrapper
per gestire i requisiti di sola lettura e di lettura e scrittura. Esso può essere costruito da un ObservableList
:
SimpleListProperty<String> list = new SimpleListProperty<>(FXCollections.observableArrayList());
IntegerProperty intProperty = new SimpleIntegerProperty();
intProperty.bind(list.sizeProperty());
Gli utenti che hanno bisogno i benefici da questa classe (oltre usando solo ObservableList
) e decidono di usarlo non è necessario l'approccio statico Bindings#size
.
Ottima risposta !! La prima volta che ho visto 'ListExpression' https://docs.oracle.com/javase/8/javafx/api/javafx/beans/binding/ListExpression.html – GOXR3PLUS
@ GOXR3PLUS Probabilmente non vedrai mai' ListExpression' nel codice dato che è livello molto basso e pochi dovranno usarlo direttamente. 'SimpleListProperty' e' ReadOnlyListWrapper', d'altra parte, sono piuttosto utili immediatamente. – user1803551
Già aggiunto nel codice :). Ho bisogno di legare il valore massimo di una barra di scorrimento alla dimensione di un 'elenco osservabile - 1' – GOXR3PLUS