Come visualizzare la barra di avanzamento tramite popup e chiudere automaticamente se il processo è terminato. Ecco il mio codice.Mostra popup con ProgressBar in JavaFX
Task<ProgressForm> task = new Task<ProgressForm>() {
@Override
public ProgressForm call() throws InterruptedException{
ProgressForm pf = new ProgressForm();
for (int i = 1; i <= 10; i++) {
pf.activateProgressBar(this);
updateProgress(i, 10);
}
return pf;
}
};
task.setOnSucceeded(new EventHandler<WorkerStateEvent>() {
@Override
public void handle(WorkerStateEvent t) {
ProgressForm pf = (ProgressForm)task.getValue();
pf.getDialogStage().close();
}
});
Thread th = new Thread(task);
th.run();
Progress classe form:
private final Stage dialogStage;
private final ProgressBar pb = new ProgressBar();
private final ProgressIndicator pin = new ProgressIndicator();
public ProgressForm() {
dialogStage = new Stage();
dialogStage.initStyle(StageStyle.UTILITY);
dialogStage.setResizable(false);
dialogStage.initModality(Modality.APPLICATION_MODAL);
// PROGRESS BAR
final Label label = new Label();
label.setText("alerto");
pb.setProgress(-1F);
pin.setProgress(-1F);
final HBox hb = new HBox();
hb.setSpacing(5);
hb.setAlignment(Pos.CENTER);
hb.getChildren().addAll(pb, pin);
Scene scene = new Scene(hb);
dialogStage.setScene(scene);
}
public void activateProgressBar(final Task task) throws InterruptedException {
pb.progressProperty().bind(task.progressProperty());
pin.progressProperty().bind(task.progressProperty());
dialogStage.show();
}
public Stage getDialogStage() {
return dialogStage;
}
Il problema con questo codice è
- se io uso .Show(), la visualizzazione di pop-up è liscia ma nessun progresso BAR.
- se uso .showAndWait(), la visualizzazione di pop-up richiede l'uscita manuale per il pop-up per chiudere MA Visualizza la barra di avanzamento.
Qualche idea/idea su questo?
buona giornata! ho provato il tuo codice ma sembra che il palco non mostri la mia barra di avanzamento. l'aspetto di esso: http://pasteboard.co/2zCr2Qbx.png – user3247087
Hai eseguito il codice esatto che ho postato? Ha funzionato bene per me. Quali JDK e OS stai usando? –
è stato in grado di risolvere un problema del mio problema. in questo momento devo correggere come evitare il blocco dell'interfaccia utente ogni volta che chiamo waitFor per un determinato processo. sembra che la mia barra di avanzamento non venga visualizzata a causa di waitFor(). – user3247087