Ben boyutunu bilmek ObservableList
'ın boyutu için bir değer bağlamak istiyorum ve birden çok değerBir ObservableList boyutuna değer nasıl bağlanır?
private ObservableList<String> strings = FXCollections.observableArrayList();
Ben boyutunu bilmek ObservableList
'ın boyutu için bir değer bağlamak istiyorum ve birden çok değerBir ObservableList boyutuna değer nasıl bağlanır?
private ObservableList<String> strings = FXCollections.observableArrayList();
Onlar Bindings
sınıfla bağlı olabilir varsa da bilmek:
ObservableList<String> strings = FXCollections.observableArrayList();
IntegerBinding sizeProperty = Bindings.size(strings);
BooleanBinding multipleElemsProperty = new BooleanBinding() {
@Override protected boolean computeValue() {
return strings.size() > 1;
}
};
Kabul edilen cevap doğrudur. İlgili okuyucuların yararı için ek bilgiler sağlayacağım.
ObservableList
bir arabirimdir ve bu nedenle size
özelliği tutmaz. ListExpression
soyut sınıf ObservableList
uygulanması ve ReadOnlyIntegerProperty size
ve ReadOnlyBooleanProperty empty
özelliklerini ekleyerek olduğunu. Bu sınıf, liste özellik sınıflarının tüm kalıtım ağacı için temel sınıftır.
Çoğu kullanıcı ağacın kendileri soyut sınıflar alt sınıf istemeyeceksiniz nedenle, sunulan somut uygulama bakacağız: Adından da anlaşılacağı gibi
ListExpression (abstract)
- ReadOnlyListProperty (abstract)
- ListProperty (abstract)
- ListPropertyBase (abstract)
- SimpleListProperty
- ReadOnlyListWrapper
SimpleListProperty
olduğu, basit bir liste özelliği - Property
numaralı telefondan ObservableList
. Diğer SimpleXxxProperty
s paralelliğidir. Ayrıca, salt okunur ve okuma ve yazma gereksinimlerini işlemek için bir alt sınıf vardır. Bir ObservableList
inşa edilebilir: (sadece ObservableList
kullanarak üzeri) bu sınıftan yararları ihtiyaç ve statik Bindings#size
yaklaşımı gerekmez kullanmaya karar
SimpleListProperty<String> list = new SimpleListProperty<>(FXCollections.observableArrayList());
IntegerProperty intProperty = new SimpleIntegerProperty();
intProperty.bind(list.sizeProperty());
Kullanıcılar.
Harika cevap! İlk kez 'ListExpression'ı görebildiğim https://docs.oracle.com/javase/8/javafx/api/javafx/beans/binding/ListExpression.html – GOXR3PLUS
@ GOXR3PLUS Muhtemelen hiç bir zaman ListExpression' kodunda göremezsiniz. Çok düşük seviye ve birkaç doğrudan kullanmanız gerekir. Diğer taraftan, SimpleListProperty' ve ReadOnlyListWrapper', kullanıma hazır oldukça faydalıdır. – user1803551
Zaten onu ekledi :). Bir ScrollBar'ın maksimum değerini 'Gözlemlenebilir Listenin Boyutuna - 1' – GOXR3PLUS