1

テーブルセル、1 つのラベル、プログレスバーを配置する必要があります。

プログレスバーには、次のものを使用していました。

@FXML
private TableView tableView;

@FXML
private TableColumn columTabela;

@FXML
private TableColumn columSituacao;   

private List<Tabela> lista = new ArrayList<Tabela>();

public List<Tabela> getLista() {
    return lista;
}

public void setLista(List<Tabela> lista) {
    this.lista = lista;
}

   private void test() {

    getLista().add(new Tabela("test", -1.0));
    getLista().add(new Tabela("test1", null));
    columTabela.setCellValueFactory(new PropertyValueFactory<Tabela, String>("nome"));
    columSituacao.setCellValueFactory(new PropertyValueFactory<Tabela, Double>      ("progresso"));
    columSituacao.setCellFactory(ProgressBarTableCell.forTableColumn()); 
    tableView.getItems().addAll(FXCollections.observableArrayList(lista));

しかし、セル内のプログレスバーラベルを超えたものが必要になり、これに対する解決策を見つけることができませんでした

クラス表:

パブリッククラスのテーブル{

private String nome;

private Double progresso;

public Tabela(String nome, Double progresso) {
    this.nome = nome;
    this.progresso = progresso;
}

public String getNome() {
    return nome;
}

public void setNome(String nome) {
    this.nome = nome;
}

public Double getProgresso() {
    return progresso;
}

public void setProgresso(Double progresso) {
    this.progresso = progresso;
 }

}

私のプロセスが実行されている間、テーブルのセルにプログレスバーが表示され、ラベルが変わります。

どんな助けにも感謝します..

4

1 に答える 1

3

独自のセル ファクトリを作成する必要があります。

Callback<TableColumn<Tabela, Double>, TableCell<Tabela, Double>> cellFactory =
    new Callback<TableColumn<Tabela, Double>, TableCell<Tabela, Double>>() {
public TableCell call(TableColumn<Tabela, Double> p) {
    return new TableCell<Tabela, Double>() {

        private ProgressBar pb = new ProgressBar();
        private Text txt = new Text();
        private HBox hBox = HBoxBuilder.create().children(pb, txt).alignment(Pos.CENTER_LEFT).spacing(5).build();
        @Override
        public void updateItem(Double item, boolean empty) {
            super.updateItem(item, empty);
            if (empty) {
                setText(null);
                setGraphic(null);
            } else {
                pb.setProgress(item);
                txt.setText("value: " + item);
                setGraphic(hBox);
                setContentDisplay(ContentDisplay.GRAPHIC_ONLY);
            }
        }
    };
}
};

それを使って、

columSituacao.setCellFactory(cellFactory);
于 2013-08-14T13:37:58.217 に答える