0

ボタンを押すたびに、無限ループで宣言されている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);
    }
}
4

0 に答える 0