JavaFX:延迟单击按钮后打开一个舞台

时间:2018-11-11 11:40:33

标签: javafx

Javafx的新功能。在我的主阶段控制器类中,我试图执行以下操作时遇到了问题:单击按钮后,启动延迟,然后打开一个新阶段。

在按钮动作事件中以及在我用于延迟的Scheduler的run()部分中加载FXML文件时出现问题。 我不能在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);


}

}

0 个答案:

没有答案
相关问题