guiのボタンが押されたときに私のプログラムがwhileループから抜け出そうとしています。if文がwhile(真)ループで実行されていない
GUIスレッドを起動するスレッドがあり、適用ボタンが押されるまで待機します。 は、ここでは、コードです:
public void run() {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGui();
}
});
// Wait until apply button clicked and set team
while(true) {
applyClicked = gui.getApplyClicked();
if (applyClicked == true) {
teamYellow = gui.getTeam();
break;
}
}
しかしでも、私は、[適用]をクリックしますとapplyClickedはそれがif文を実行しないGUIの中に真になります。
ただし、真下の印刷行を追加すると、それは正常に動作します。
また、行ごとにデバッグして、変数を正しく設定しても機能します。
なぜ私はprintlnを持っていないときにこれが動作しないのですか?スレッドとは何か?
おかげ
「volatile」? (また、忙しい待っているループ、悪い!) –
揮発性が働いた。どのように私はGUIから忙しい待機ループなしでループを含むクラスにブール値を得るだろうか? – sam