JavaFX - 从通知弹出窗口中检索对象
Posted
技术标签:
【中文标题】JavaFX - 从通知弹出窗口中检索对象【英文标题】:JavaFX - Retrieve objects from notification popups 【发布时间】:2018-10-15 15:17:16 【问题描述】:我正在开发的 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() 方法中使用它们? 感谢您的宝贵时间。
【问题讨论】:
我可能并不真正理解你想要做什么,但你不能做类似JSONObject jsonObject = (JSONObject) result.get(i)).get("number").toString();
然后Notifications notificationBuilder =.....
和notificationBuilder.onAction(e -> // HOW TO RETRIEVE <result[i]> HERE? System.out.println(jsonObject.toString()); ); notificationBuilder.show();
之类的事情
您是否遇到了最终或实际上最终的问题?
是的,这就是我问的原因(首先我已经尝试过你的方法)
您是否尝试过将JSONObject jsonObject
设为全局。
【参考方案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();
);
【讨论】:
以上是关于JavaFX - 从通知弹出窗口中检索对象的主要内容,如果未能解决你的问题,请参考以下文章
如何设置一个按钮以显示弹出窗口的不同结果? (JavaFX)