JavaFx ProgressBar n'est pas mise à jour
J'essaie de comprendre comment mettre à jour une Barre de progression dans un environnement multithread. Je suis en train de faire quelque chose de mal ici, mais je ne vois pas ce qu'il est. Cela doit simplement remplir la barre de 3sec, mais il n'a pas d':
Task<Void> task = new Task<Void>(){
@Override
public Void call(){
for (int i = 1; i < 10; i++) {
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(i);
updateProgress(i , 10);
}
return null;
}
};
updProg = new ProgressBar();
updProg.progressProperty().bind(task.progressProperty());
Thread th = new Thread(task);
th.setDaemon(true);
th.start();
Ce qui me manque?
OriginalL'auteur Chromos | 2013-03-19
Vous devez vous connecter pour publier un commentaire.
Votre échantillon fonctionne très bien pour moi.
L'échantillon remplit la barre un peu toutes les 3 secondes, remplir complètement la barre dans une demi-minute.
Je viens de l'enveloppa dans quelques échafaudages code afin de le rendre exécutable et il a travaillé sans changement (java7u15, win7).
Peut-être que vous avez été en utilisant des accès anticipé à la version de Java 8 qui a un bug (maintenant corrigé) autour de ProgressBar mises à jour.
RT-29018 ProgressBar et ProgressIndicator disparaissent lorsque progressProperty est mis à jour
edit: le gui est conçu dans un fxml feuille.
Alors, le patch est déjà disponible @jewelsea?
Le correctif pour la RT-29018 sera disponible dans un Java 8 preview release dans les deux prochaines semaines.
Peut-être que vous devriez ajouter "=" à la condition de la boucle, de sorte que la barre de progression peut être rempli à la fin.
OriginalL'auteur jewelsea
Êtes-vous d'utiliser la dernière version de JDK 8 Early-Access? Si oui, voir ce rapport de bug, j'ai déposé: http://javafx-jira.kenai.com/browse/RT-29018
Pour l'essentiel, dans une récente publication de l'early-access construire, ils ont fait quelques changements dans la peau et de css. Cela a provoqué un bug caché à être révélé dans les nœuds enfants qui sont plus sales que les nœuds parents, mais les deux ont besoin d'être repeints dans la même impulsion, le parent est sale niveau finit par écraser l'enfant nœuds sale.
Ce qui provoque le progrès de ne pas montrer, et en fait, pour moi, le
progressBar
est devenu totalement invisible, dès queupdateProgress
a été appelée à partir de la tâche. Ils ont un patch en place, je ne sais pas quand cela va passer par.Contourner ce problème, utiliser jdk7 en attendant le patch, ou vous pouvez faire ce que j'ai fait et d'appliquer ceci à partir de l'ancien css dans votre feuille de style css:
OriginalL'auteur Edub Kendo
Si vous avez défini updProg dans le fichier FXML, le problème pourrait être l'initialisation ici.
essayer d'enlever cette ligne:
S'il vous plaît, si quelqu'un downvote, gardez un commentaire à ce sujet, de sorte que l'affiche peut corriger sa réponse, et peut obtenir upvote.
OriginalL'auteur Chaiavi
OriginalL'auteur Dan