【发布时间】:2020-06-16 15:16:50
【问题描述】:
伙计们,
我的程序有很多 TableViews。在除一种排序之外的所有表格中都有效。我在那个单一的 TableViews 中找不到我的错误。单击标题时,它似乎是排序但不刷新视图。如果我更改选项卡并返回,则 TableView 已排序。如果选择了一行并单击标题,则所选颜色会在正确的位置排序,但不会在表格数据上排序。
我有我的 ObservableList 和 TableView:
private ObservableList<ProjectViewModel> projectViewModelList = null;
// some more TableColumns
@FXML
TableColumn<ProjectViewModel, String> TableColumnToolchainStepphase;
@FXML
TableView<ProjectViewModel> TableViewToolchain;
我的初始化:
@FXML
public void initialize(){
//...
initializeLists();
//...
initTableViewToolchain();
initTableColumns();
//...
}
private void initializeLists(){
projectViewModelList = FXCollections.observableArrayList();
}
private void initTableViewToolchain(){
TableViewToolchain.setItems( projectViewModelList );
}
private void initTableColumns(){
TableColumnToolchainStepphase
.setCellValueFactory( new Callback<CellDataFeatures<ProjectViewModel, String>, ObservableValue<String>>() {
@Override
public ObservableValue<String> call( CellDataFeatures<ProjectViewModel, String> param ){
String string = param.getValue().getStepphaseString();
return new ReadOnlyStringWrapper( string );
}
} );
}
我的餐桌人数:
private void setProjectViewModelList( Collection<ProjectViewModel> projectViewModelCollection ){
projectViewModelList.clear();
projectViewModelList.setAll( projectViewModelCollection );
}
我哪里做错了?
【问题讨论】:
-
也许这个 SO 问题(和答案)会有所帮助。 Sort TableView by certain column Javafx
-
没用。我的 TableView 已预先排序。但是,当再次单击标题时,排序箭头会变为降序,但表格仍按升序排序。排序算法正在工作。但是 TableView 不会重新加载。更改选项卡给了我一个排序表。
-
我有一个解决方法,但我的问题仍然有效,我想知道原因。
TableViewToolchain.setOnMouseClicked( ( MouseEvent event ) -> { TableViewToolchain.sort(); TableViewToolchain.refresh(); } ); -
查看您的代码,我看不出是什么导致您的
TableView以您描述的方式运行。为了帮助您,我想在我的机器上复制并运行您的代码。为了让我这样做,我请你edit你的问题并发布minimal reproducible example。
标签: sorting tableview javafx-8