我正在开发的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()方法中使用它们? 感谢您的宝贵时间。
答案 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(); }
}
}
});
}