Ich möchte eine JavaFX ProgressBar in einer FXML-Datei von einer anderen Klasse, in einem Controller-Thread initialisiert, definiert aktualisieren. Momentan wird es einfach nicht aktualisiert.JavaFX: Update ProgressBar (@FXML) von Thread
test.fxml
<ProgressBar fx:id="progressBar" prefWidth="5000.0" progress="0.0">
<VBox.margin>
<Insets top="3.0" />
</VBox.margin>
</ProgressBar>
Controller.java
@FXML
public static ProgressBar progressBar = new ProgressBar(0);
MyMain main;
@FXML
private void handleStartWork() throws Exception {
new Thread() {
@Override
public void run() {
try {
main = new MyMain();
main.doIt();
} catch (final Exception v) {
// ...
}
}
}.start();
}
MyMain.java
public void doIt(){
while(...){
Platform.runLater(() -> PoCOverviewController.progressBar.setProgress((count/sum) * 100));
}
}
ich verschie schon versucht mieten Versionen unter Berücksichtigung der Beiträge mag:
- ProgressBar doesn't work with a fxml file and a controller
- How to configure Progress Bar and Progress Indicator of javaFx?
Ich weiß nicht, ob es der richtige Ansatz ist die ProgressBar statisch zu machen. Ich wollte das Objekt einfach nicht durch den Workflow führen.
Update (Xavier Lambros Antwort): Jetzt habe ich versucht, es mit Singletons aber es funktioniert immer noch nicht:
Controller.java
@FXML
public ProgressBar progressBar = new ProgressBar(0);
private static Controller INSTANCE = new Controller();
public static Controller getInstance() {
return INSTANCE;
}
public ProgressBar getProgressBar() {
return progressBar;
}
MyMain.java
public void doIt(){
while(...){
Platform.runLater(() -> Controller.getInstance().getProgressBar()
.setProgress((count/sum) * 100));
}
}
Mögliches Duplikat von [Kompatibilitätsprobleme mit javafx 8 - statische FXML-Felder] (http://stackoverflow.com/questions/23105433/javafx-8-compatibility-issues-fxml-static-fields) – fabian
@fabian Der statische Modifikator wurde entfernt von ProgressBar, funktioniert aber auch nicht. –
Sind 'count' und' sum' 'int's oder' long''? Dann sollte die folgende Frage helfen: http://stackoverflow.com/questions/4685450/why-is-the-result-of-1-3-0 – fabian