2016-05-14 22 views
-3

Ich habe ein Label, das versteckt ist. Ich möchte es sichtbar machen, aber es gibt eine Verzögerung und das Label ist nach einer anderen Anweisung sichtbar. Gibt es eine Möglichkeit, das Etikett sofort zu aktualisieren?JavaFX setVisible wird nicht sofort aktualisiert

public void foo { 
    label.setVisible(true); 
    //the label is not visible 
    foo2(); 
    //here the label is visible 
} 
+0

Gibt es in der Methode 'foo2()' irgendwas, das die Sichtbarkeit der 'label' steuert? –

+0

nein, es tut nichts mit der ui – xqtxq

+0

Sie könnten darüber nachdenken, die Eigenschaft 'visibleProperty' zu binden, wenn es Sinn macht. – pzaenger

Antwort

0

Der Aufruf Ihrer Methode foo() muss auf dem JavaFX-Anwendungsthread erfolgen, sonst würden Sie eine Ausnahme erhalten. Das bedeutet aber auch, dass der Anwendungsthread für die gesamte Zeit, die Ihre Methode foo() läuft, blockiert ist. Wie sollte JavaFX das Rendering Ihres Labels aktualisieren, wenn Sie den Anwendungs-Thread blockieren? Das Rendering kann erst nach dem Beenden der Methode foo() stattfinden. Wenn die Ausführung von foo2() zu lange dauert, sollten Sie das auf einem anderen Thread ausführen. Siehe die Dokumentation für Parallelität in JavaFX.

Verwandte Themen