0

テーブルビューを「リフレッシュ」する唯一の方法は次のとおりです。

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

これを行うより良い方法はありますか?

私はこれらの例を試しました:

JavaFX 2.1 TableView 更新項目

4

1 に答える 1

0
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();
}
于 2013-08-27T13:47:45.447 に答える