ボタンを押すたびに、無限ループで宣言されているif条件(条件はブール変数)の内部に到達したいというようなことを試みています。したがって、アクションリスナーメソッドの目的は、ブールフィールドを真にすることであり、実行時にステートメントにturnFlag
到達できます。System.out.println("Counter = " + counter);
ただし、ボタンを押すとif(turnFlag)
、コンソールにさえも入力されず、turnFlagがtrueとして出力されます。なぜ入っていないのか理解できませんか?お役に立てれば幸いです。
public class ExampleController extends Thread implements Initializable {
@FXML private static Button theButton;
private int counter;
private static boolean turnFlag=false;
/**
* Initializes the controller class.
*/
@Override
public void initialize(URL url, ResourceBundle rb) {
counter = 0;
this.start();
}
@Override
public void run(){
while(true){
if(turnFlag){
System.out.println("Counter = " + counter);
turnFlag = false;
}
}
}
@FXML private void onAction(ActionEvent event){
turnFlag=true;
System.out.println("turnFlag = " + turnFlag);
}
}
編集:次のようなアプリケーションクラスを共有するのを忘れていました
public class Example2 extends Application {
public static Parent rootPane;
@Override
public void start(Stage primaryStage) throws IOException {
rootPane = FXMLLoader.load(getClass().getResource("example.fxml"));
Scene scene = new Scene(rootPane);
primaryStage.setTitle("Hello World!");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}