我试图找到一个外行的定义,addNotify()
但我无法使用谷歌得到任何答案。
据我所知,addNotify()
在课堂上压倒一切时,我应该先打电话super.addNotify();
,然后再做其他事情。
我的问题是,会addNotify()
自动运行吗?它的目的是什么,当我覆盖它时会发生什么,此外,我为什么要覆盖这个方法?
谢谢。
我试图找到一个外行的定义,addNotify()
但我无法使用谷歌得到任何答案。
据我所知,addNotify()
在课堂上压倒一切时,我应该先打电话super.addNotify();
,然后再做其他事情。
我的问题是,会addNotify()
自动运行吗?它的目的是什么,当我覆盖它时会发生什么,此外,我为什么要覆盖这个方法?
谢谢。
我的问题是,addNotify() 会自动运行吗?
是的。确切的位置和时间取决于 AWT 实现的内部结构。
它的目的是什么
如javadoc中所述。它是非常低级的东西,是连接 AWT 世界和本地窗口世界的“胶水”的一部分。(我故意说得很高级和含糊不清。如果您想了解细节,请下载并阅读 OpenJDK 源代码。)
当我覆盖它时会发生什么
你可能会破坏 AWT :-)
此外,我为什么要覆盖这个方法?
我想不出这样做的充分理由……除非您试图将 AWT 移植到不同的操作系统或不同的本机窗口系统。
方法addNotify() / removeNotify()
是 AWT 提供的唯一钩子,我们可以在其中正确地销毁和重新创建 OpenGL 上下文,因为底层的原生小部件正在被销毁。
addNotify()
低级组件使用它与操作系统上的底层对等点进行交互,以便真正发生某些事情,而不仅仅是屏幕上的漂亮图片。
最好避免使用这种方法。
Component#addNotify()是java.awt.Component
类中的方法。API 中说明此方法的目的:
通过将其连接到本机屏幕资源,使该组件可显示。此方法由工具包内部调用,不应由程序直接调用。