2016-04-01 25 views
0

我有一個應用程序,主持TableView。每當用戶點擊一個特定的列標題對行排序,我需要攔截排序的JavaFX 8項目表查看

  1. 保存項目的當前順序,
  2. 執行實際排序,
  3. 保存項目的新秩序。

我能發現這一點:

this.tableView.sortPolicyProperty().set(t -> { 
     System.out.println("saving source order"); 
     ... // Saving 
     FXCollections.sort(tableView.getItems(), t.getComparator()); 
     System.out.println("saving target order"); 
     ... // Saving 
     return true; 
}); 

然而,這將引發ClassCastException相當頻繁。在排序前後有沒有更好的方法來保存項目排列?

回答

1

你可以使用ListChangeListener更好的方式 :)

tv.getItems().addListener(new ListChangeListener<T>(){ 
      @Override 
      public void onChanged(javafx.collections.ListChangeListener.Change< 
            ? extends T> c) {   
      while(c.next()){ 
       if(c.wasPermutated()){ 
        System.out.println("is permuated"); 
       } 
      } 
     } 

}); 

希望它可以幫助聽。

+1

它的確如此。謝謝! :-) – coderodde