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