这个问题与我在这里问的问题有些相关。现在,我有一个“控制器”类,它由主要方法和所有摆动组件组成。有一个名为“VTOL”的类,它由一个名为“altitude”的变量组成(到目前为止,我已将该变量声明为 volatile)。
这是一个由在后台运行的线程组成的类:
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 (我不知道它是否是一个好习惯)
其次,Controller 类中有一个名为“lblAltitude”的 jLabel,我希望在此线程中更改它的值时更新它的值,但不知何故那没有发生。我怎样才能做到这一点?