JavaFX-从通知弹出窗口中检索对象

时间:2018-10-15 15:17:16

标签: java javafx push-notification notifications

我正在开发的JavaFX应用程序遇到问题,这是如何检索用于创建通知弹出窗口的数据。 情况是这样的:我每隔x秒就有一个针对Web服务的线程循环调用,这将向我返回我需要的数据(部分用于创建通知)。 这是代码的一部分:

        if(alert.isNotificationAlertEnabled()) {

        Platform.runLater(new Runnable() {

            @Override
            public void run() {

                for(int i=0; i<result.length(); i++) {

                    System.out.println(".run()");

                    try {

                        Notifications notificationBuilder = Notifications.create()
                                                                         .title(((JSONObject) result.get(i)).get("number").toString())
                                                                         .hideAfter(Duration.seconds(Alert.NOTIFICATION_DURATION))
                                                                         .position(Pos.BASELINE_RIGHT)
                                                                         .text(((JSONObject) result.get(i)).get("short_description").toString())
                                                                         .darkStyle();

                        notificationBuilder.onAction(e -> {

                            // HOW TO RETRIEVE <result[i]> HERE?

                        });
                        notificationBuilder.show();

                    } catch(Exception e) { e.printStackTrace(); }

                }
            }
        });
    }

有一种方法可以将数据绑定到单个通知,以便在onAction()方法中使用它们? 感谢您的宝贵时间。

1 个答案:

答案 0 :(得分:1)

也许我不明白您的问题,但是在我看来您可以做到

 if(alert.isNotificationAlertEnabled()) {

    Platform.runLater(new Runnable() {

        @Override
        public void run() {

            for(int i=0; i<result.length(); i++) {

                System.out.println(".run()");

                try {

                    Notifications notificationBuilder = Notifications.create()
                                                                     .title(((JSONObject) result.get(i)).get("number").toString())
                                                                     .hideAfter(Duration.seconds(Alert.NOTIFICATION_DURATION))
                                                                     .position(Pos.BASELINE_RIGHT)
                                                                     .text(((JSONObject) result.get(i)).get("short_description").toString())
                                                                     .darkStyle();

                    notificationBuilder.onAction(e -> {

                        // HOW TO RETRIEVE <result[i]> HERE?
                        System.out.println(((JSONObject) result.get(i)).toString());
                    });
                    notificationBuilder.show();

                } catch(Exception e) { e.printStackTrace(); }

            }
        }
    });
}

if(alert.isNotificationAlertEnabled()) {

    Platform.runLater(new Runnable() {

        @Override
        public void run() {

            for(int i=0; i<result.length(); i++) {

                System.out.println(".run()");

                try {
                    JSONObject jsonObject = (JSONObject) result.get(i);
                    Notifications notificationBuilder = Notifications.create()
                                                                     .title(jsonObject.get("number").toString())
                                                                     .hideAfter(Duration.seconds(Alert.NOTIFICATION_DURATION))
                                                                     .position(Pos.BASELINE_RIGHT)
                                                                     .text(jsonObject.get("short_description").toString())
                                                                     .darkStyle();

                    notificationBuilder.onAction(e -> {

                        // HOW TO RETRIEVE <result[i]> HERE?
                        System.out.println(jsonObject.toString());
                    });
                    notificationBuilder.show();

                } catch(Exception e) { e.printStackTrace(); }

            }
        }
    });
}