Этот вопрос несколько связан с тем, который я задал ЗДЕСЬ. Теперь у меня есть класс «Контроллер», который состоит из основного метода и всех компонентов качания. есть класс с именем «VTOL», который состоит из переменной с именем «высота» (на данный момент я объявил эту переменную изменчивой).
вот класс, состоящий из потока, работающего в фоновом режиме:
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();
}
}
}
}
Во-первых, проблема, с которой я столкнулся изначально, заключалась в том, что я не мог обновить значение «высоты», оно оставалось равным 0 на протяжении всего выполнения программы. Поэтому я объявил его как volatile (я не знаю, является ли это хорошей практикой)
Во-вторых, в классе контроллера есть jLabel с именем «lblAltitude», я хочу обновить его значение, так как оно было изменено в этом потоке, но почему-то это не так. происходит. Как мне это сделать?