BooleeanProperty'ı ObservableList'teki her öğeyle birleştiren herhangi bir yöntem var mı?JavaFX - gözlemlenebilir Koleksiyondaki tüm öğelerin özelliklerine bağlama özelliği
static BooleanBinding conjunction(ObservableList<BooleanProperty> op)
BooleeanProperty'ı ObservableList'teki her öğeyle birleştiren herhangi bir yöntem var mı?JavaFX - gözlemlenebilir Koleksiyondaki tüm öğelerin özelliklerine bağlama özelliği
static BooleanBinding conjunction(ObservableList<BooleanProperty> op)
JavaFX 2.2 platformu tanımlanmış conjunction API vardır:
ObservableList<BooleanProperty> list;
list = FXCollections.observableList(new ArrayList<BooleanProperty>));
BooleanProperty emptyProperty = new SimpleBooleanProperty();
emptyProperty.bind(Bindings.conunction(list));`
böyle bir yöntem olarak var.
BooleanBinding alt sınıflarına göre ConjunctionBooleanBinding
(aka AllTrueBinding
) oluşturabilirsiniz.
İşte örnek bir uygulama. Örnek, daha iyi performans için optimize edilmiş olabilir ve WeakReferences'dan faydalanabilir, bu yüzden manuel yerleştirme gerektirmez. aşağıdaki gibi
import java.util.*;
import javafx.beans.property.*;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
public class ListBindingTest {
final BooleanProperty a = new SimpleBooleanProperty(true);
final BooleanProperty b = new SimpleBooleanProperty(true);
final BooleanProperty c = new SimpleBooleanProperty(true);
final BooleanProperty d = new SimpleBooleanProperty(true);
final ObservableList<BooleanProperty> booleanList =
FXCollections.observableArrayList(a, b, c, d);
public static void main(String[] args) {
new ListBindingTest().test();
}
private void test() {
AllTrueBinding at = new AllTrueBinding(booleanList);
System.out.println(at.get() + forArrayString(booleanList));
b.set(false);
System.out.println(at.get() + forArrayString(booleanList));
b.set(true);
System.out.println(at.get() + forArrayString(booleanList));
booleanList.add(new SimpleBooleanProperty(false));
System.out.println(at.get() + forArrayString(booleanList));
booleanList.remove(3, 5);
System.out.println(at.get() + forArrayString(booleanList));
at.dispose();
}
private String forArrayString(List list) {
return " for " + Arrays.toString(list.toArray());
}
}
Kolayca yöntemini uygulayabilirsiniz:
public static BooleanBinding conjunction(ObservableList<BooleanProperty> list){
BooleanBinding and = new SimpleBooleanProperty(true).and(list.get(0));
for(int i = 1; i < list.size(); i++){
and = and.and(list.get(i));
}
return and;
}
sayesinde Tavsiyene kullanılan buraya
Ve
nasıl çalıştığını göstermek için bir test koşum olduğunu. – dpelisek