Ben de bir ObservableList bir bir ObservableList olan Anaveri ve filteredData var. Burada MCVE gerekli olduğundaKopya ObservableList java
Sonra ben filtrelenmiş verileri göstermek için filtre ayarlanır, aynı zamanda kurtarmak edebilmek için zaman kullanmak istiyorum:
package br;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
public class Main{
private static ObservableList<Foo> masterData = FXCollections.observableArrayList();
private static ObservableList<Foo> filteredData = FXCollections.observableArrayList();
static Filter filter = new Filter();
public static void addDummy(){
masterData.add(new Foo("a",1));
masterData.add(new Foo("aa",3));
masterData.add(new Foo("b",2));
masterData.add(new Foo("bb",4));
masterData.add(new Foo("c",3));
}
public static void printData(ObservableList<Foo> list){
for(Foo f: list) System.out.println(f.getName());
}
public static void main(String[] args) {
addDummy();
applyFilter(3);
printData(filteredData);
applyFilter(0);
printData(filteredData);
}
public static void applyFilter(int num){
filter.setData(masterData);
filter.setFilter(num);
filteredData = filter.getData();
}
}
sınıf I verileri filtrelemek için kullandığımız filtre,: sadece bir dize adı ve bir int bar
package br;
import java.util.ArrayList;
import java.util.List;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
public class Filter {
private ObservableList<Foo> data = FXCollections.observableArrayList();
public void setFilter(int filter){
List<Foo> copy = new ArrayList<Foo>(data);
for(Foo f: copy)
if(f.getBar()<filter) data.remove(f);
}
public ObservableList<Foo> getData() {
return data;
}
public void setData(ObservableList<Foo> data) {
this.data = data;
}
}
ve Foo sınıfı, (artı Gett Bu kodu çalıştırdığınızda/ayarlayıcılar) ers
package br;
public class Foo {
private String name;
private int bar;
public Foo(String name, int bar){
this.setBar(bar);
this.setName(name);
}
public String getName() {return name;}
public void setName(String name) {this.name = name;}
public int getBar() {return bar;}
public void setBar(int bar) {this.bar = bar;}
}
, alırsınız:
aa
bb
c
Hem filtre set edildiğinde ila 3 (ki beklenen verileri filtre edilmiş) ve süzme sonrasında sıfıra için "sıfırlandı" idi.
nasıl filtre daima Anaveri verilerle işlem görmüş ve ardından filteredData depolanan emin olabilirim?
Not: bu JavaFX projesi için, yani gerçekten ObservableList kullanmak gerekir.
Sadece bunun bana yardımcı olduğunu söylemek istedim, çok teşekkürler! FXCollections sınıfı, çoklu örneklerde çok kullanışlıdır! – XaolingBao