Zugriff auf Variablen und Swing-Komponenten über verschiedene Threads

Diese Frage hat etwas mit der zu tun, die ich gestellt habeHIER. Jetzt habe ich eine Klasse "Controller", die aus der Hauptmethode und allen Swing-Komponenten besteht. Es gibt eine Klasse mit dem Namen "VTOL", die aus einer Variablen mit dem Namen "height" besteht (ich habe diese Variable ab sofort als flüchtig deklariert).

Hier ist eine Klasse, die aus einem Thread besteht, der im Hintergrund läuft:

import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Vineet
 */
public class Gravity extends Thread {

    String altStr;
    double alt;
    Controller ctrl = new Controller();

    @Override
    public void run() {
        while (true) {
            alt=VTOL.altitude;
            System.out.println(alt);
            alt = alt-0.01;
            VTOL.altitude= (int) alt;
            altStr=new Integer(VTOL.altitude).toString();
            ctrl.lblAltitude.setText(altStr);
            try {
                Thread.sleep(10);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

    }
}

Erstens war das Problem, mit dem ich anfangs konfrontiert war, dass ich den Wert der "Höhe" nicht aktualisieren konnte, da er während der Ausführung des Programms 0 blieb. Also erklärte ich es als flüchtig (ich weiß nicht, ob es eine gute Praxis ist)

Zweitens gibt es ein jLabel in der Controller-Klasse mit dem Namen "lblAltitude". Ich möchte seinen Wert aktualisieren, da er sich in diesem Thread geändert hat, aber irgendwie passiert das nicht. Wie kann ich das machen?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage