JLabel nicht wieder ändern Farbe
Teil meine Funktion sieht wie folgt aus
jLabel2.setBackground(Color.YELLOW);
jLabel2.setText("Status : Idle");
boolean ok=cpu21.RestartSSH();
if(ok){
jLabel2.setBackground(Color.GREEN);
jLabel2.setText("Status : Run");
}
Bevor ich in in-label-Funktion ist Grün und Ausführen, aber wenn ich in der Funktion es nicht chabge die Farbe Gelb ( Funktion RestartSSH ausgeführt 5-6 sec, aber während dieser Zeit die Etiketten nicht ändern, dass Farben und Fotos ). Wo ich Fehler machen, in der Malerei ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
RestartSSH
in einem separaten thread, oder deine GUI nicht reagieren auf Ereignisse.Beispiel:
(Update: Hinzugefügt Aufruf
SwingUtilities.invokeLater
)Thread
verwenden sollteninvokeLater()
, wie hier vorgeschlagen en.wikipedia.org/wiki/...JLabels undurchsichtig ist standardmäßig so Ihr hintergrund ist nicht lackiert, standardmäßig. Versuchen Sie es mit:
oder vielleicht haben Sie zu rufen repaint nach änderung der Farbe:
Ich vermute, dass Ihre
restartSSH()
Methode ist die Blockierung der event-dispatch-thread. Ein Ansatz ist die Verwendung einesSwingWorker
, wie vorgeschlagen, in diesem Beispiel. Dies würde ermöglichen es Ihnen, zeigen Sie den Fortschritt des Neustarts und die label entsprechend an, wenn Sie fertig.