Java FX ProgressIndicator dreht sich nicht

eclipseworker

Bekanntes Mitglied
Ich habe ein kleines Programm (erstes GUI-Programm), das für gewisse Sachen etwas länger braucht und um zeigen, dass das Programm arbeitet habe ich einen kleinen ProgressIndicator eingebaut und meine Idee wäre eigentlich gewesen, dass er sich so drehen müsste:
Java:
procircle.setProgress(-1F); /*bzw. er wird mit 
-1 inzialisert und normaler Weise versteckt also
procircle.setVisible(true); */

//tue Arbeit

procircle.setProgress(0); //procircle.setVisible(false);
Aber da dreht sich nichts auch wenn mein Programm für eine Minute still steht, wie kann ich das ausbessern?
 

eclipseworker

Bekanntes Mitglied
Das Problem ist das diese Arbeit nicht wirklich in eine eigene Klasse auslagerbar ist.
Oh PS: und Exceptions können da auch auftreten.
Ok ich habe es bei einer Aufgabe geschaft circa so:
Java:
...
procircle.setVisible(true);
new RunableWorker(...).run();
procircle.setVisible(false);
...
Funktioniert auch nur wird der Kreis weiterhin nicht angezeigt.
 

mrBrown

Super-Moderator
Mitarbeiter
Ok ich habe es bei einer Aufgabe geschaft circa so:
Java:
...
procircle.setVisible(true);
new RunableWorker(...).run();
procircle.setVisible(false);
...
Funktioniert auch nur wird der Kreis weiterhin nicht angezeigt.

Naja, was erwartest du, wenn du die Sichtbarkeit direkt nach dem auf true setzten wieder auf false setzt?
 

eclipseworker

Bekanntes Mitglied
Naja, was erwartest du, wenn du die Sichtbarkeit direkt nach dem auf true setzten wieder auf false setzt?
Dass die Arbeit (die etwas länger dauert zuerst gemacht wird, das ist auch der Grund bin ich ja zu erst ja auch nicht drauf kommen, dass mit einem separaten Thread zu machen.) Habe es schon mit einem wait() versucht, gab aber eine unschöne Expedition, wie mache ich das korrekt?
 

knilch

Bekanntes Mitglied
Hi,
hier mal ein kleines Beispiel:
Java:
package application;

import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.concurrent.Task;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Pos;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.ProgressIndicator;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.scene.paint.Color;
import javafx.stage.Stage;

public class ProgressIndicatorTest extends Application{
    private Task<Void> task;
    private Button startButton;
    private Button cancelButton;
    private ProgressIndicator progressIndicator;
 
    public static void main(String[] args) {
        Application.launch(args);
    }
    @Override
    public void start(Stage primaryStage) {
        primaryStage.setTitle("ProgressIndicator Example");
        Group root = new Group();
        Scene scene = new Scene(root, 350, 100, Color.WHITE);

        BorderPane mainPane = new BorderPane();
        root.getChildren().add(mainPane);

        final Label label = new Label("Progress: ");
        progressIndicator = new ProgressIndicator(0);

        final HBox hb = new HBox();
        hb.setSpacing(10);
        hb.setAlignment(Pos.CENTER);
        hb.getChildren().addAll(label, progressIndicator);
        mainPane.setTop(hb);

        startButton = new Button("Start");
        cancelButton = new Button("Stop");
        final HBox hb2 = new HBox();
        hb2.setSpacing(10);
        hb2.setAlignment(Pos.CENTER);
        hb2.getChildren().addAll(startButton, cancelButton);
        mainPane.setBottom(hb2);
     
        startButton.setOnAction(new EventHandler<ActionEvent>() {

            public void handle(ActionEvent actionEvent) { 
                startButton.setDisable(true);
                progressIndicator.setProgress(0);
                cancelButton.setDisable(false);

                task = createTask();
                progressIndicator.progressProperty().bind(task.progressProperty());

                task.messageProperty().addListener(new ChangeListener<String>() {
                    public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
                        System.out.println(newValue);
                    }
                });

                task.setOnSucceeded(event -> {
                    System.out.println("fertig");
                    startButton.setDisable(false);
                    cancelButton.setDisable(true);
                    progressIndicator.progressProperty().unbind();
                });
             
                task.setOnCancelled(event -> {
                    System.out.println("angehalten.");
                    startButton.setDisable(false);
                    cancelButton.setDisable(true);
                    progressIndicator.progressProperty().unbind();
                });
             
                new Thread(task).start();
            }
        });
        cancelButton.setOnAction(new EventHandler<ActionEvent>() {
            public void handle(ActionEvent event) {
                task.cancel(true);
            }
        });
        primaryStage.setScene(scene);
        primaryStage.show();
    }
 

    public Task<Void> createTask() {
        return new Task<Void>() {
            @Override
            protected Void call() throws Exception {
                for (int i = 0; i < 10; i++) {
                    Thread.sleep(1000);
                    updateMessage(i * 1000 + " ms");
                    updateProgress(i + 1, 10);
                }
                return null;
            }
        };
    }
}
... ist nicht perfekt, aber zeigt mal wie so etwas funktionieren könnte...;)
 
Zuletzt bearbeitet:

dzim

Top Contributor
1)
Schau mal hier: Da habe ich ein Beispiel für so etwas gebaut (hab keine Lust den Code noch einmal zu posten):

http://www.java-forum.org/thema/mei...erden-nicht-aktualisiert.172464/#post-1086826

2)
Ok ich habe es bei einer Aufgabe geschaft circa so:
Java:
...
procircle.setVisible(true);
new RunableWorker(...).run();
procircle.setVisible(false);
...
Funktioniert auch nur wird der Kreis weiterhin nicht angezeigt.

Kurz noch eine etwas detailiertere Begründung, warum das vermutlich nicht funktioniert:
Variante 1) Du erstellst eine Runnable, nennst sie RunnableWorker und rufst die #run() Methode direkt auf. Dadruch wird kein Thread abgespalten und dein UI friert genauso wie vorher ein. Nur dass die Arbeit diesmal sauberer in einer eigenen Klasse stattfindet.

Variante 2) Unwahrscheinlich, aber wenn doch ein Thread abgespaltet werden sollte, dann würde #run() diesen lediglich starten, aber unabhängig davon, ob die Arbeit noch läuft, oder nicht, sofort wieder procircle.setVisible(false); aufrufen.

Die erste Variante ist meiner Einschätzung nach dein Fehler. Da die UI aufgrund der Arbeit einfriert, siehst du keinen sich drehenden ProgressBar.
Du musst deine Runnable in einem Thread laufen lassen. Dann aber muss entweder am Ende der Thread-Arbeit dieser selbst den ProgrBar wieder unsichtbar machen, oder aber wenn du den in unseren Code-Beispielen genannten Task verwendest, das mittelst eines Callbacks erledigen, das automatisch am Ende der Arbeit aufgerufen wird.
Lies dir die Beispiele von @knilch und mir mal in Ruhe durch und versuch dich mal daran.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Tort-E JavaFX ProgressIndicator dreht sich nicht AWT, Swing, JavaFX & SWT 2
ralfb1105 JavaFX ProgressIndicator Meldung wenn Task failed AWT, Swing, JavaFX & SWT 5
B JavaFX Textfields: Fortschritt als ProgressBar und Progressindicator AWT, Swing, JavaFX & SWT 5
G JavaFX TreeTableView und ProgressIndicator AWT, Swing, JavaFX & SWT 1
K 3d balken der sich dreht AWT, Swing, JavaFX & SWT 5
P Swing FocusTraversalPolicy dreht sich im Kreis AWT, Swing, JavaFX & SWT 2
L Mein Kopf dreht sich... Brauche Hilfe beim GUI gestalten AWT, Swing, JavaFX & SWT 10
I JavaFX Programmcode pausieren gestaltet sich als schwierig AWT, Swing, JavaFX & SWT 7
N Dropshadow setzen bei einer Gruppe von Tiles, die sich jeweils in einer Stackpane befinden, welche in einer Gridpane angeordnet sind. AWT, Swing, JavaFX & SWT 0
berserkerdq2 Skalieren sich javafx objekte automatisch auf die Bildschirmgröße AWT, Swing, JavaFX & SWT 6
B JavaFX Prüfen ob ein Objekt sich mehrmals in einer Liste befindet AWT, Swing, JavaFX & SWT 5
K Textarea aktuallisiert sich nicht, nach Auswahl (Itemlistener) AWT, Swing, JavaFX & SWT 3
S e(fx)clipse erscheint nicht im Marketplace, lässt sich nicht installieren AWT, Swing, JavaFX & SWT 16
A TableView updatet sich nicht AWT, Swing, JavaFX & SWT 3
M Wieso verändert sich die Framerate nach erneutem Starten des AnimationTimer? AWT, Swing, JavaFX & SWT 18
I AWT java.awt.FileDialog - "coffee cup"-Icon lässt sich nicht ersetzen AWT, Swing, JavaFX & SWT 14
J JOptionPane ruft sich selbst immer wieder neu auf AWT, Swing, JavaFX & SWT 3
P Swing Programm hängt sich bei Buttondruck auf? (GUI für "Chatbot" erstellen) AWT, Swing, JavaFX & SWT 15
T Swing JTable cellRenderer mit jpg Hintergrundfarbe lässt sich nicht ändern. AWT, Swing, JavaFX & SWT 1
R JOptionPane schließt sich nicht wieder AWT, Swing, JavaFX & SWT 2
R Textfield lässt sich nicht positionieren AWT, Swing, JavaFX & SWT 1
E Keystroke für Ausschneiden läßt sich nicht ändern AWT, Swing, JavaFX & SWT 2
B Dynamische ListView-Größe, die bei Fenstergrößenänderung sich anpasst AWT, Swing, JavaFX & SWT 19
sascha-sphw JavaFX ListCell höhe verändert sich beim ändern der Text-Farbe AWT, Swing, JavaFX & SWT 14
R Swing Komponente im JFrame überschreinen sich AWT, Swing, JavaFX & SWT 7
A Swing Datei lässt sich zwar speichern, aber nicht laden (Inhalt im JTextField anzeigen) AWT, Swing, JavaFX & SWT 18
O showConfirmDialog öffnet sich nicht AWT, Swing, JavaFX & SWT 3
K JavaFX Fenstergröße ändert sich (Gluon - SceneBuilder) AWT, Swing, JavaFX & SWT 23
S JavaFX Scene öffnet sich nicht AWT, Swing, JavaFX & SWT 3
C Bilder so einbinden, dass sie sich ändern AWT, Swing, JavaFX & SWT 6
ralfb1105 JavaFX Label lässt sich innerhalb service Task nicht updaten? AWT, Swing, JavaFX & SWT 22
J ChangeListener verhält sich komisch AWT, Swing, JavaFX & SWT 14
S Ausgabe aktualisiert sich nur nach 2. Klick AWT, Swing, JavaFX & SWT 17
Legi Swing JButton Icon verschiebt sich AWT, Swing, JavaFX & SWT 2
P Gui lässt sich nicht starten AWT, Swing, JavaFX & SWT 10
B JavaFX setOnMousePressed() - verhält sich wie setOnMouseClicked()? AWT, Swing, JavaFX & SWT 6
R JavaFX lässt sich nicht in Eclipse einbinden AWT, Swing, JavaFX & SWT 4
J BackgroundJPanel passt sich dem JFrame nicht an AWT, Swing, JavaFX & SWT 7
J Button lässt sich nicht auf dem JPanel verschieben AWT, Swing, JavaFX & SWT 5
M 2D-Grafik Spielfigur bewegt sich nicht AWT, Swing, JavaFX & SWT 6
W Javafx - Image soll sich mit der Camera mitbewegen AWT, Swing, JavaFX & SWT 1
T .jar-Datei lässt sich unflexibler ausführen als über die IDE AWT, Swing, JavaFX & SWT 11
K JavFX: VBox.setVGrow stell sich quer AWT, Swing, JavaFX & SWT 2
T Timer und GIF Animationen pausieren während Maus sich bewegt AWT, Swing, JavaFX & SWT 4
S Swing Bedienelemente ordnen sich automatisch neu an AWT, Swing, JavaFX & SWT 2
B Hauptfenster öffnet sich mehrmals AWT, Swing, JavaFX & SWT 9
K Mit JavaFX angefangen. Lohnt sich Swing? AWT, Swing, JavaFX & SWT 28
P Swing JFrame minimiert sich bei Doppelklick auf die Titel-Leiste AWT, Swing, JavaFX & SWT 16
krgewb AWT JFrame soll sich wie Dialog verhalten AWT, Swing, JavaFX & SWT 9
D JavaFX Label lässt sich nicht mehrmals färben AWT, Swing, JavaFX & SWT 7
Prafy Sich ändernde Farbverläufe erstellen AWT, Swing, JavaFX & SWT 4
D JavaFX Anwendung hängt sich permanent auf AWT, Swing, JavaFX & SWT 6
T JButton überlagern sich und werden erst beim Mausscrollen sichtbar AWT, Swing, JavaFX & SWT 2
T Swing Programm hängt sich auf! AWT, Swing, JavaFX & SWT 23
C LayoutManager Bei verkleinern des Fensters, verschieben sich JPanels übereinander. AWT, Swing, JavaFX & SWT 7
J Button vergrößert sich bei Fenster resize AWT, Swing, JavaFX & SWT 22
J Lohnt sich FX? AWT, Swing, JavaFX & SWT 2
S JavaFX Image Skalierung in Scrollpane, Scrollpane resized sich nicht AWT, Swing, JavaFX & SWT 5
N Programm mit Swing und Thread, Figur bewegen sich nicht AWT, Swing, JavaFX & SWT 6
Tom299 JavaFX Default-Cursor läßt sich nicht immer "aktivieren" AWT, Swing, JavaFX & SWT 3
B Frame hängt sich auf trotz invokeLater AWT, Swing, JavaFX & SWT 1
D Java Swing, Label lässt sich nicht mit Checkboxen/Knopf verändern AWT, Swing, JavaFX & SWT 2
J Server stellt sich hin AWT, Swing, JavaFX & SWT 13
R Swing Elemente verschieben sich im GBL beim Ein/Ausblenden AWT, Swing, JavaFX & SWT 0
L JButton flackern - Programm hängt sich auf AWT, Swing, JavaFX & SWT 3
H JTree in JScrollPane passt sich nicht an Größe von JPanel an AWT, Swing, JavaFX & SWT 2
J Programm hängt sich bei Log In auf AWT, Swing, JavaFX & SWT 1
M JFreeChart neu zeichnen sich Wenn Jtable sich ändert AWT, Swing, JavaFX & SWT 5
ToBJo JavaFX TreeView zerstört sich selbst AWT, Swing, JavaFX & SWT 1
T Swing Button bleibt grau [=> UI hat sich aufgehängt, Aufgabe in Thread auslagern] AWT, Swing, JavaFX & SWT 3
B JavaFX Problem bei Kamera / Group, gesamte Scene bewegt sich mit AWT, Swing, JavaFX & SWT 0
M JXTreeTable: Spaltengröße läßt sich nicht mehr festlegen AWT, Swing, JavaFX & SWT 0
I JPanel in JScrollPane verkleinert sich leider nicht .... AWT, Swing, JavaFX & SWT 2
G Komponenten vergrößern sich nicht trotz Layoutmanager AWT, Swing, JavaFX & SWT 24
W JTextfield - Wert lässt sich nicht setzen AWT, Swing, JavaFX & SWT 3
H 2D-Grafik BufferStrategy zieht spur hinter sich her AWT, Swing, JavaFX & SWT 3
T SWT SWTBot Test: Dialog soll sich öffnen,wenn button gedrückt AWT, Swing, JavaFX & SWT 3
kaoZ Swing JFrame lässt sich nicht über dispose() abbauen AWT, Swing, JavaFX & SWT 0
D 2D-Grafik Rechteck befindet sich unter dem Rahmen des JFrame. AWT, Swing, JavaFX & SWT 1
A Swing per JComboBox gewünschtes Attribut auswählen und Komponenten passen sich an AWT, Swing, JavaFX & SWT 7
B Swing focusGained öffnet sich zwei mal AWT, Swing, JavaFX & SWT 3
S JScrollPane --> Programm hängt sich beim scrollen auf AWT, Swing, JavaFX & SWT 2
A Panel lässt sich nicht bewegen AWT, Swing, JavaFX & SWT 2
U ToolTip Größenänderung, passt sich erst beim zweiten Mal an AWT, Swing, JavaFX & SWT 6
H Java3D, ViewP Translattform soll sich nach einerformgroup richten. AWT, Swing, JavaFX & SWT 5
R JPanel-Größe verändert sich nicht. Warum? AWT, Swing, JavaFX & SWT 5
R Swing getContentPane maximiert sich nicht mit, wenn man das JFrame maxmiert AWT, Swing, JavaFX & SWT 8
A 2D-Grafik Zeichnen einer sich bewegenden Box mit BufferStrategy zieht Spur AWT, Swing, JavaFX & SWT 2
G 2D-Slider bzw. eine graphische Auswahlkomponente die sich so verhält AWT, Swing, JavaFX & SWT 6
F Grafik hängt sich auf AWT, Swing, JavaFX & SWT 20
M JavaFX WebView lässt sich nur einmal öffnen AWT, Swing, JavaFX & SWT 2
B Komponenten in Fenster verdrängen sich untereinander AWT, Swing, JavaFX & SWT 6
W Swing JButton lässt sich nicht anzeigen AWT, Swing, JavaFX & SWT 8
J AWT choice mit viel Auswahl aktualisiert sich nicht korrekt beim scrollen?! AWT, Swing, JavaFX & SWT 3
A Vier gewinnt: GUI aktualisiert sich nicht AWT, Swing, JavaFX & SWT 12
T Java Swing Oberfläche aktualisiert sich nicht AWT, Swing, JavaFX & SWT 2
P JApplet verhält sich im Browser anders als im Eclipse (AppletViewer) AWT, Swing, JavaFX & SWT 3
D JSplitPane lässt sich nicht verschieben AWT, Swing, JavaFX & SWT 3
S Look und Feel ändert sich nicht AWT, Swing, JavaFX & SWT 4
M Swing + Java2D Sichtfeld bewegen verhält sich träge AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben