我有一个长期运行的数据处理应用程序。根据它看到的数据,我可能想要启动一个JavaFX应用程序窗口(或者它可能永远不会启动它)。如何传入缓存数据?
e.g。在Swing中,我有一个可能看起来像构造函数:
class MyFrame extends JFrame{
public MyFrame(BlobOfInMemoryCachedData manyMegabytesOfData){
this.data = manyMegabytesOfData;
// create JPanel, etc. using that data
...
}
}
基于这个答案:https://stackoverflow.com/a/24611918/155631,我可以想象非标准的java解决方法。在我将这些变通方法的使用加入到应用程序设计之前,我想验证:是否真的没有更直接的方法来直接传递对象句柄?
答案 0 :(得分:1)
非常快,因为我没有时间用示例代码写出正确答案:
关键是JavaFX应用程序只启动一次,并根据需要在其上调用静态访问器来显示窗口。设置隐式退出虚假内容可以防止JavaFX运行时的默认行为在应用程序的最后一个窗口被隐藏时关闭(因此它只是在后台突然等待信号再次显示)。
您可以通过让您的数据处理应用程序扩展JavaFX Application类来简化一些事情,但您可能希望将它们分开以便于测试或其他设计原因。
你的另一个选择是使用JFXPanel,但这增加了一个不必要的Swing依赖,所以我建议不要这样做。