刷新tableview JavaFX中的progressbar
我发现“刷新”我的tableview的唯一方法是:刷新tableview JavaFX中的progressbar,java,javafx-2,Java,Javafx 2,我发现“刷新”我的tableview的唯一方法是: private void refreshTable() { tableView.getItems().clear(); try { Thread.sleep(Etapa.SLEEP); tableView.getItems().addAll(getList()); } catch (InterruptedException e) { Thread.interrupted()
private void refreshTable() {
tableView.getItems().clear();
try {
Thread.sleep(Etapa.SLEEP);
tableView.getItems().addAll(getList());
} catch (InterruptedException e) {
Thread.interrupted();
}
}
但“进度条”似乎不能正常工作:
p.getTableColumn().setVisible(false);
p.getTableColumn().setVisible(true);
有更好的方法吗
我试过这些例子:
columSituacao.setCellValueFactory(新的回调函数(){
公共可观察值呼叫(CellDatap){
返回新的ReadOnlyObjectWrapper(p.getValue());
}
});
columSituacao.setCellFactory(新回调(){
公共TableCell调用(TableColumn参数){
最终ProgressBar ProgressBar=新ProgressBar();
最终HBox盒=新HBox();
box.setPrefHeight(Progress.PREF_HEIGHT);
最终文本文本=新文本();
BorderPane border=新的BorderPane();
边框.setTop(文本);
border.setBottom(progressBar);
BorderPane.setAlignment(文本,位置中心);
box.getChildren().add(边框);
返回新的TableCell(){
@凌驾
受保护的void updateItem(选项卡项,布尔值为空){
super.updateItem(项,空);
if(空){
setText(空);
设置图形(空);
}否则{
如果(文本!=null){
text.textProperty().bind(item.etapaProperty());
}
progressBar.progressProperty().bind(item.progressProperty());
progressBar.prefWidthProperty().bind(this.widthProperty());
设置图形(框);
setContentDisplay(仅限ContentDisplay.GRAPHIC_);
}
}
};
}
});
tableView.getItems().addAll(lista);
tableView.getSelectionModel().selectFirst();
}
看一看,你能把代码贴在应该更新进度条的地方吗?
columSituacao.setCellValueFactory(new Callback<CellDataFeatures<Tabela, Tabela>, ObservableValue<Tabela>>() {
public ObservableValue<Tabela> call(CellDataFeatures<Tabela, Tabela> p) {
return new ReadOnlyObjectWrapper<Tabela>(p.getValue());
}
});
columSituacao.setCellFactory(new Callback<TableColumn<Tabela, Tabela>, TableCell<Tabela, Tabela>>() {
public TableCell<Tabela, Tabela> call(TableColumn<Tabela, Tabela> param) {
final ProgressBar progressBar = new ProgressBar();
final HBox box = new HBox();
box.setPrefHeight(Progress.PREF_HEIGHT);
final Text text = new Text();
BorderPane border = new BorderPane();
border.setTop(text);
border.setBottom(progressBar);
BorderPane.setAlignment(text, Pos.CENTER);
box.getChildren().add(border);
return new TableCell<Tabela, Tabela>() {
@Override
protected void updateItem(Tabela item, boolean empty) {
super.updateItem(item, empty);
if (empty) {
setText(null);
setGraphic(null);
} else {
if (text != null) {
text.textProperty().bind(item.etapaProperty());
}
progressBar.progressProperty().bind(item.progressProperty());
progressBar.prefWidthProperty().bind(this.widthProperty());
setGraphic(box);
setContentDisplay(ContentDisplay.GRAPHIC_ONLY);
}
}
};
}
});
tableView.getItems().addAll(lista);
tableView.getSelectionModel().selectFirst();
}