0

条件を満たした後、進捗を 100% にしようとしています。しかし、進行状況を設定する代わりに可視性を設定すると、変数「progressBar」が見つかりません。

columSituacao.setCellValueFactory(new Callback<CellDataFeatures<Tabela, HBox>, ObservableValue<HBox>>() {

    public ObservableValue<HBox> call(CellDataFeatures<Tabela, HBox> p) {

        final Tabela tabela = p.getValue();

        final ProgressBar progressBar = new ProgressBar(0.0);
        progressBar.setPrefWidth(columSituacao.getWidth());
        progressBar.progressProperty().bind(tabela.progressProperty());

        final HBox box = new HBox();
        box.setPrefHeight(Progress.PREF_HEIGHT);

        final Text text = new Text();
        text.textProperty().bind(tabela.etapaProperty());

        final BorderPane border = new BorderPane();
        border.setTop(text);
        border.setBottom(progressBar);
        BorderPane.setAlignment(text, Pos.CENTER);

        tabela.etapaProperty().addListener(new ChangeListener<String>() {

            public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {

                if (newValue.equals(ConstantesEtapa.ETAPA_OK)) {
                    progressBar.setProgress(1.0);//Here is the exception
                }
            }
        });
        box.getChildren().add(border);
        return new SimpleObjectProperty<HBox>(box);
    }
});

戦車の

4

1 に答える 1

0

あなたの問題は、一方向にバインドされた値を設定できないことだと思います。

値を設定する前にバインドを解除してください。

例えば:

if (newValue.equals(ConstantesEtapa.ETAPA_OK)) {
    progressBar.progressProperty().unbind();
    progressBar.setProgress(1.0);
}
于 2013-08-29T19:35:33.977 に答える