JavaFX: открытие этапа после задержки по нажатию кнопки - PullRequest
0 голосов
/ 11 ноября 2018

Сорта нового для Javafx. Я сталкиваюсь с проблемой, когда в своем классе контроллера для моей основной стадии я пытаюсь: после нажатия кнопки запустить задержку, которая откроет новую стадию.

Проблема возникает при загрузке файла FXML в событии действия кнопки и в части run () планировщика, которую я использую для задержки. Я не могу выбросить исключение в run (), потому что оно конфликтует само с собой?

И я не могу поймать его в родительском корне, выполнив:

   Parent root = null;
                try {
                    root =       FXMLLoader.load(getClass().getResource("Popup.fxml"));
                } catch (IOException e) {
                    e.printStackTrace();
                }

потому что это просто не будет работать. Я думаю, что подхожу к этому плохо или просто неправильно.

Я не могу заставить это работать. Этап работает нормально только при нажатии кнопки, но мне нужна задержка.

Код для класса контроллера:

public class Controller implements Initializable {

public static int seconds;
public static boolean yes = false;
public String strtime = String.format("Current Date/Time : %tc", new Date());

@FXML
Button remind;
@FXML
Label secondsuntil,date;
@FXML
TextField Day, Minute, remindname;
@FXML
private Button Butt;
static String Nameoftask;
int days, minutes;
@Override
public void initialize(URL location, ResourceBundle resources) {
    // TODO Auto-generated method stub
    date.setText(strtime);
}



@FXML
private void handleButtonAction(ActionEvent actionEvent) throws IOException {
    final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);

    ScheduledFuture<?> countdown = scheduler.schedule(new Runnable() {
        @Override
        public void run(){

            Stage primaryStage = new Stage();
            Parent root = FXMLLoader.load(getClass().getResource("Popup.fxml"));
            primaryStage.setTitle(Nameoftask);
            primaryStage.initModality(Modality.NONE);
            primaryStage.setScene(new Scene(root, 200,50));
            Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
            double width = screenSize.getWidth();
            double height = screenSize.getHeight();
            primaryStage.setX(width);enter code here
            primaryStage.setY(height*-1);
            primaryStage.show();


            try {
                FXMLLoader loader = new
                        FXMLLoader(getClass().getResource("Popup.fxml"));
                loader.setController(new Controller());

                primaryStage.show();
            } catch(Exception e) {
                e.printStackTrace();
            }
        }}, 1, TimeUnit.SECONDS);


}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...