Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在离开页面/控制器之前,JavaFX中是否有必须调用的destroy方法_Javafx_Destructor_Destroy_Finalize - Fatal编程技术网

在离开页面/控制器之前,JavaFX中是否有必须调用的destroy方法

在离开页面/控制器之前,JavaFX中是否有必须调用的destroy方法,javafx,destructor,destroy,finalize,Javafx,Destructor,Destroy,Finalize,在我的JavaFX应用程序中,在特定页面上,我必须初始化(加载页面时)一些设备,如虹膜扫描仪、指纹扫描仪、照相机等。在离开页面/控制器之前,有必要取消初始化设备。那页有两个按钮。如果用户通过单击这两个按钮中的一个离开此页面,我可以轻松地取消初始化它们。但是,如果用户通过单击任何菜单/子菜单(此应用程序中有30多个菜单和子菜单)离开页面,我如何取消这些设备的初始化 java中没有析构函数,我也尝试过使用finalize,但没有结果。您不能只依赖finalize()方法。似乎表明垃圾收集器使用此方法

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


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

您不能只依赖
finalize()
方法。似乎表明垃圾收集器使用此方法检查数据丢失引用。因此,您需要使用自定义方法手动销毁对象,然后将自动应用
finalize()


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

有30多个子菜单,我必须从所有子菜单中调用deinitialize()。我认为这不是一个更好的解决办法。我应该期待得到更好的解决方案。我不明白:)您希望在不显式调用actionners中的方法的情况下完成反初始化,因为在代码上编写太多。反初始化将显式完成,但我不想从30子菜单调用反初始化。我只想走捷径。请不明白您到底在哪里看到了问题:您只是不想键入那些x去初始化命令,或者您看到了更深层次的问题吗?您可以在包含要反初始化的设备控件的页面中添加一个侦听器,并在父级更改为
null
时执行反初始化设备的工作。