2023-02-16 293
当视图被破坏时(舞台封闭,另一个视图取代等),是否有任何方法可以在控制器上调用?也就是说,是否有:
@FXML
private void initialize()
update :我这样做的原因是我的应用程序正在接收来自PubNub的消息,然后需要将这些消息传输到这些控制器上,以便他们可以选择是否对它们采取行动或不是(它们是否取决于内部控制器信息,例如视图的大小).
我的计划是让这些控制器注册在全球列表中,并在被摧毁时,请登记自己.
大多数评论都告诉您,Javafx中没有这样的等效功能. james_d 也提到了使用WeakReference,我相信这是您问题的好解决方案.
public final class PubNubManager {
private final List<WeakReference<PubNubListener>> listeners = new ArrayList<>();
// Other standard singleton stuff
public void informListeners(PubNubData data) {
listeners.stream().forEach(listenerRef -> {
if (listenerRef.get() != null)
listenerRef.get().receiveData(data);
});
// You can remove weakreference that are no longer valid, or stop getting for data when there are no more listener.
}
public void registerListener(PubNubListener listener) {
if (listener != null)
listeners.add(new WeakReference<>(listener));
}
// You can make one to unregister too if you want.
}
public interface PubNubListener {
void receiveData(PubNubData data);
}
public class ControllerA implements PubNubListener {
@Override
public void receiveData(PubNubData data) {
// What you need to do
}
}
以上所述是小编给大家介绍的是否有一个与@FXML initialize相对应的方法?,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!
原文链接:https://77isp.com/post/33840.html
=========================================
https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。
数据库技术 2022-03-28
网站技术 2022-11-26
网站技术 2023-01-07
网站技术 2022-11-17
Windows相关 2022-02-23
网站技术 2023-01-14
Windows相关 2022-02-16
Windows相关 2022-02-16
Linux相关 2022-02-27
数据库技术 2022-02-20
抠敌 2023年10月23日
嚼餐 2023年10月23日
男忌 2023年10月22日
瓮仆 2023年10月22日
簿偌 2023年10月22日
扫码二维码
获取最新动态