JavaFX刷新警报 [英] JavaFX refresh Alert

查看:178
本文介绍了JavaFX刷新警报的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

你好我的应用程序有警报,在没有用户响应后我想刷新警报/再次显示它,由于某种原因我没有看到第二个警告它是空的,如:

Hello I have app with alert and after no response from user I want to refresh alert/show it again and for some reason I don't see second alert it's empty like:

我正在关闭警报,如果它显示,所以我不知道为什么下一个警报是空的。
包裹申请;

I am closing alert if it's showing so I don't know why next alert is empty. package application;

//imports

public class Main extends Application{

    int number = 50;
    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) throws Exception {
        alertMethod();
    }


    private void alertMethod() {
        number += number + 10;
        Alert alert = new Alert(Alert.AlertType.CONFIRMATION);
        alert.setTitle("Title");
        alert.setHeaderText("Number " + number);
        alert.setContentText("Choose your option.");     

        ButtonType buttonTypeOne = new ButtonType("Yes");
        ButtonType buttonTypeCancel = new ButtonType("No", ButtonBar.ButtonData.CANCEL_CLOSE);
        alert.getButtonTypes().setAll(buttonTypeOne, buttonTypeCancel);

        Thread newThread = new Thread(new Runnable() {
            @Override
                public void run() {
                    try {
                        Thread.sleep(2000);
                    } catch (InterruptedException ex) {
                        Thread.currentThread().interrupt();
                    }

                    Platform.runLater(new Runnable() {
                        @Override
                        public void run() {
                            if(alert.isShowing()) {
                                alert.close();
                            }
                            alertMethod();
                        }
                        });
                    }
            });
            newThread.start();
        Optional<ButtonType> result = alert.showAndWait();
        if (result.get() == buttonTypeOne){
            System.out.println("Pressed Yes");
         } else if (result.get() == buttonTypeCancel) {
            System.out.println("Pressed No");
         }
    }
}


推荐答案

这只是猜测我想你想要什么。你的问题不是很清楚。
此应用程序使用来自此处的@Sergey Grinev代码。
它每两秒更新警报

This is just a guess at what I think you want. Your problem is not very clear. This app uses @Sergey Grinev code from here. It updates the Alert every two seconds.

//imports
import java.util.Optional;
import javafx.animation.KeyFrame;
import javafx.animation.Timeline;
import javafx.application.Application;
import static javafx.application.Application.launch;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.control.Alert;
import javafx.scene.control.ButtonBar;
import javafx.scene.control.ButtonType;
import javafx.stage.Stage;
import javafx.util.Duration;

public class Main extends Application
{

    int number = 50;

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

    @Override
    public void start(Stage primaryStage) throws Exception
    {
        alertMethod();
    }

    private void alertMethod()
    {

        Alert alert = new Alert(Alert.AlertType.CONFIRMATION);
        alert.setTitle("Title");
        alert.setHeaderText("Number " + number);
        alert.setContentText("Choose your option.");

        ButtonType buttonTypeOne = new ButtonType("Yes");
        ButtonType buttonTypeCancel = new ButtonType("No", ButtonBar.ButtonData.CANCEL_CLOSE);
        alert.getButtonTypes().setAll(buttonTypeOne, buttonTypeCancel);

        Timeline twoSecondsWonder = new Timeline(new KeyFrame(Duration.seconds(2), new EventHandler<ActionEvent>()
        {
            @Override
            public void handle(ActionEvent event)
            {
                number = number + 10;
                alert.setAlertType(Alert.AlertType.CONFIRMATION);
                alert.setTitle("Title -> " + number);
                alert.setHeaderText("Number " + number);
                alert.setContentText("Choose your option.");
            }
        }));
        twoSecondsWonder.setCycleCount(Timeline.INDEFINITE);
        twoSecondsWonder.play();

        Optional<ButtonType> result = alert.showAndWait();
        if (result.get() == buttonTypeOne) {
            System.out.println("Pressed Yes");
        }
        else if (result.get() == buttonTypeCancel) {
            System.out.println("Pressed No");
        }
    }
}

这篇关于JavaFX刷新警报的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆