この質問は、私がここで尋ねたものと多少関連しています。これで、メイン メソッドとすべてのスイング コンポーネントで構成される "Controller" クラスができました。「高度」という名前の変数で構成される「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();
}
}
}
}
まず、私が最初に直面していた問題は、プログラムの実行中ずっと「高度」の値を更新できなかったことです。だから私はそれを揮発性と宣言しました(それが良い習慣かどうかはわかりません)
次に、「lblAltitude」という名前の Controller クラスに jLabel があります。このスレッドで変更された値を更新したいのですが、どういうわけかそれは起こりません。どうやってやるの?