Очень простой пример JavaFX wait (), notify () - PullRequest
0 голосов
/ 23 марта 2020

Я очень хорошо знаю, что об этом спрашивали бесчисленное количество раз прежде, но я, кажется, не могу понять это. Вся программа сосредоточена на форексе и использует живые данные, поэтому она должна обновляться каждые 20 секунд или около того.

Я создал пользовательский интерфейс, который имеет 2 страницы. На первой странице есть кнопка «Следующая страница», которая, очевидно, переходит на страницу 2 (именно туда идут текущие данные). Я сделал отдельный класс (TestController) с параметром для l oop, который спит в течение 20 секунд, для тестирования итерация просто установлена ​​в единицу.)

public class testController {

    // Sleep for 20 seconds
    static void sleep() throws InterruptedException {

        for (int i = 0; i < 1; i++) {

            Thread.sleep(20000);
        }
        testModel.theModel();

        testView.createSecondPage(null);

Это вызывается из моего класса TestView, упрощенно до этого:

public class testView extends Application {

    Button button;

    public testView() {}

        public static void launchApplication(String[]args) {
        launch(args);
    }

        @Override
        public void start(Stage stage) throws Exception {

            button = new Button();
            button.setText("Next Page");
…

            Scene scene = new Scene(grid, 1075, 700);
            stage.setScene(scene);
            stage.show();

            // change code here 

            button.setOnAction(e -> {
                try {
                    createSecondPage(stage);
                } catch (InterruptedException e1) {
                    e1.printStackTrace();
                }
            });
                }
}

и это:

public static void createSecondPage(Stage stage) throws InterruptedException {

testController.sleep();

}

Я удалил весь контент, который будет отображаться в пользовательском интерфейсе, так как его много, и он не имеет отношения к вопрос. И вот в чем вопрос: мне нужно приостановить / остановить / удерживать первую страницу, пока не будет нажата кнопка «следующая страница». Код, который я сейчас плохо написал, позволяет мне щелкнуть только после завершения первой итерации. Поэтому мне нужно что-то, что говорит: «как только первая страница отобразится, подождите, пока пользователь не нажмет следующую кнопку, затем отобразите вторую страницу и запустите ветку сна». Я посмотрел на wait (), notify (), но не могу понять; какое-то время l oop считается плохим кодом, и оператор if не помогает, поскольку я все равно не знаю, как заставить программу приостановить работу.

Это может быть просто, но не для меня. Заранее спасибо.

...