What is addNotify();?

2019-01-28 02:46发布

I've tried to find a laymans definition of addNotify() but I can't really get any answer using Google.

As far as I know, when overriding addNotify() in my class, I should call super.addNotify(); and then do whatever else afterward.

My question is, does addNotify() run automatically? What is it's purpose and what happens when I override it and furthermore, why would I ever want to override this method?

Thank's.

3条回答
Luminary・发光体
2楼-- · 2019-01-28 03:01

Methods addNotify() / removeNotify() are the only hooks the AWT provides in which we can correctly destroy and recreate the OpenGL context, given that the underlying native widget is being destroyed.
addNotify() is used by low level components to interact with the underlying peer on the operating system so that something REALLY happens, not just pretty pictures on a screen.
Better to avoid using this method.

查看更多
一夜七次
3楼-- · 2019-01-28 03:10

My question is, does addNotify() run automatically?

Yes. The precise where and when depends on the internals of the AWT implementation.

What is it's purpose

It is as described in the javadoc. It is very low level stuff that is part of the "glue" that connects the AWT world to the native windowing world. (I'm being deliberately high-level and vague. If you want the nitty-gritty details, download and read the OpenJDK source code.)

and what happens when I override it

You'd probably break AWT :-)

and furthermore, why would I ever want to override this method?

I can't think of a good reason to do this ... unless you were trying to port AWT to a different operating system or a different native windowing system.

查看更多
Viruses.
4楼-- · 2019-01-28 03:14

Component#addNotify() is a method in java.awt.Component class. The purpose of this method as stated in the API:

Makes this Component displayable by connecting it to a native screen resource. This method is called internally by the toolkit and should not be called directly by programs.

查看更多
登录 后发表回答