Pertanyaan Bagaimana cara mengikat nilai ke ukuran ObservableList?


Saya ingin mengikat nilai pada ObservableListUkuran untuk mengetahui ukurannya dan juga untuk mengetahui apakah itu memiliki beberapa nilai

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

5
2017-07-23 18:10


asal


Jawaban:


Mereka dapat terikat dengan Bindings kelas:

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

13
2017-07-23 18:21



Jawaban yang diterima benar. Saya akan memberikan wawasan tambahan untuk kepentingan pembaca yang tertarik.

ObservableList  adalah antarmuka dan tidak memiliki size milik.   ListExpression  adalah implementasi kelas abstrak ObservableList dan menambahkan ReadOnlyIntegerProperty size  dan   ReadOnlyBooleanProperty empty  properti. Kelas ini adalah kelas dasar untuk seluruh pohon warisan kelas properti daftar.

Sebagian besar pengguna tidak ingin subkelas kelas abstrak di pohon itu sendiri, jadi kita akan melihat implementasi konkret yang disediakan:

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

SimpleListProperty  adalah, seperti namanya, sebuah properti daftar sederhana - sebuah ObservableList terbungkus dalam Property. Ini adalah paralel dari yang lain SimpleXxxPropertys. Ini juga memiliki subkelas   ReadOnlyListWrapper  untuk menangani persyaratan read-only dan read-and-write. Ini dapat dibangun dari sebuah ObservableList:

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

Pengguna yang membutuhkan manfaat dari kelas ini (hanya menggunakan ObservableList) dan memutuskan untuk menggunakannya tidak perlu statis Bindings#size pendekatan.


4
2018-02-08 11:46