JavaFx:使用ObservableMap填充TableView
我在互联网上找不到正确的答案,如何用ObservableMap作为MapProperty填充tableviw。我想在一个按值排序的tableview中显示文章JavaFx:使用ObservableMap填充TableView,map,javafx,tableview,Map,Javafx,Tableview,我在互联网上找不到正确的答案,如何用ObservableMap作为MapProperty填充tableviw。我想在一个按值排序的tableview中显示文章 public class Article { private MapProperty<String, Integer> article = new SimpleMapProperty<>(); public final ObservableMap<String, Integer
public class Article {
private MapProperty<String, Integer> article = new SimpleMapProperty<>();
public final ObservableMap<String, Integer> geArticle() {
return article.get();
}
public final void setArticle(ObservableMap<String, Integer> value) {
article.set(value);
}
public MapProperty<String, Integer> articleProperty() {
return article;
}
}
公共类文章{
private MapProperty article=新的SimpleAppProperty();
公共最终可观测地图geArticle(){
return article.get();
}
公共最终无效集合物品(可观察地图值){
第条设定(价值);
}
公共映射属性articleProperty(){
退货物品;
}
}
公共类TableController扩展VBox实现可初始化{
@FXML私有表视图表视图;
@FXML私有表格专栏文章;
@FXML私有表列计数;
......
@凌驾
公共void初始化(URL位置、ResourceBundle资源){
第条setCellValueFactory(新财产价值工厂(“条款”);
count.setCellValueFactory(新属性ValueFactory(“count”);
}
}
一种简单的方法是循环键集并创建文章列表:
ObservableList<Article> list = FXCollections.observableArrayList();
for(String key : article.keySet()){
Article art = new Article(key, article.get(key));
list.add(art);
}
你看过了吗?是的,但我的问题是,如何将TableView与articleProperty()Article art=new Article(key,Article.get(key))绑定;Artiel没有构造函数。而是此列表中每个原始数据的映射。我现在如何将该列表与FXML tableView绑定,以及如何对ObservableList进行排序您必须拥有一个构造函数,否则您将如何创建项目对象。另外,向表中添加项目的唯一方法是by table.setItems(ObservableList)。
ObservableList<Article> list = FXCollections.observableArrayList();
for(String key : article.keySet()){
Article art = new Article(key, article.get(key));
list.add(art);
}
public class Article implements Comparable<Article> {
//...
public int compareTo(Article compareArticle ) {
//ascending order
return this.value - compareArticle.getValue();
}
}