2014-12-02 5 views
0

Я не могу найти в Интернете правильный ответ, как я могу заполнить tableviw ObservableMap как MapProperty. Я хотел бы показать статьи в таблице, отсортированной по значению.JavaFx: заполнить TableView с ObservableMap

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

public class TableController extends VBox implements Initializable{ 

    @FXML private TableView<Article> tableView; 
    @FXML private TableColumn<Article, String> article; 
    @FXML private TableColumn<Article, Integer> count; 

    ...... 

    @Override 
     public void initialize(URL location, ResourceBundle resources) { 
      article.setCellValueFactory(new PropertyValueFactory<Article, String>("article")); 
      count.setCellValueFactory(new PropertyValueFactory<Article, Integer>("count")); 
    } 
    } 
+0

Вы прошли через [пример] (http://docs.oracle.com/javafx/2/ ui_controls/table-view.htm # CEGHGDFA)? – ItachiUchiha

+0

Да, но моя проблема в том, как связать TableView с articleProperty() –

ответ

0

Один простой способ сделать это состоит в петле над Keyset и создать список статей:

ObservableList<Article> list = FXCollections.observableArrayList(); 

    for(String key : article.keySet()){ 
     Article art = new Article(key, article.get(key)); 
     list.add(art); 
    } 

А потом вы установите табличные товары в list.

И если вы хотите, чтобы отсортировать список, реализовать в статье сравнимой, а также использовать collections.sort(list);

public class Article implements Comparable<Article> { 
     //... 
     public int compareTo(Article compareArticle) { 

       //ascending order 
       return this.value - compareArticle.getValue(); 
     } 

    } 
+0

Статья art = new Article (key, article.get (key)); У Articel нет конструктора. Вместо этого карта для всех данных, содержащихся в этом списке. как я могу связать этот список с FXML tableView и как я могу отсортировать наблюдаемый список –

+1

У вас должен быть конструктор, иначе как вы собираетесь создавать объекты статьи. Также единственный способ добавить статьи в таблицу - table.setItems (ObservableList