JavaFx:使用ObservableMap填充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

我在互联网上找不到正确的答案,如何用ObservableMap作为MapProperty填充tableviw。我想在一个按值排序的tableview中显示文章

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();
        }

    }