【问题标题】:Is there any destroy method in JavaFX we must call before leaving the page/controller在离开页面/控制器之前,我们必须调用 JavaFX 中的任何销毁方法吗
【发布时间】:2020-01-16 22:35:41
【问题描述】:

在我的 JavaFX 应用程序中,在特定页面上,我必须初始化(加载页面时)一些设备,例如虹膜扫描仪、指纹扫描仪、相机等。在离开页面/控制器之前,有必要取消初始化 设备。该页面中有两个按钮。如果用户通过单击这两个按钮之一离开此页面,我可以轻松地取消初始化它们。但是如果用户通过点击任何菜单/子菜单离开页面(这个应用程序中有30多个菜单和子菜单),我该如何取消初始化这些设备?

java 中没有析构函数,我也尝试使用finalize,但没有任何结果。

【问题讨论】:

  • minimal reproducible example 请 .. 不明白你到底在哪里看到了问题:你只是不想输入那些 x deinitialize 命令还是你看到更深层次的问题?
  • 您可以在页面的parent property 中添加一个侦听器,该页面包含您希望取消初始化的设备的控件,并在父级更改为时执行取消初始化设备的工作null.

标签: javafx destructor destroy finalize


【解决方案1】:

您不能只依赖finalize() 方法。 An answer to this request 似乎表明垃圾收集器使用此方法检查数据丢失引用。所以你需要在自定义方法中手动销毁对象,然后finalize()会被自动应用。

您必须创建一个deinitialize() 方法(publicpackage-private,取决于您的 MenuBar 控制器的位置)然后在您的子菜单项中调用它.

【讨论】:

  • 有 30 多个子菜单,我必须从所有子菜单中调用 deinitialize()。我认为这不是一个更好的解决方案。我应该期待得到更好的解决方案。
  • 我不明白 :) 您希望在不显式调用您的操作者中的方法的情况下完成反初始化,因为在您的代码上写太多了。
  • 取消初始化将被明确地完成,但我不想从 30 子菜单中调用取消初始化。我只想要一条捷径。
猜你喜欢
  • 1970-01-01
  • 2012-07-29
  • 1970-01-01
  • 2015-07-26
  • 2019-11-25
  • 1970-01-01
  • 2013-04-01
相关资源
最近更新 更多