addNotify()有什么作用?

时间:2014-05-16 00:46:35

标签: java

好吧,所以我正在观看有关Java游戏开发的教程,他使用了一些我不确定它的功能的代码。我想知道,因为没有它,游戏就不会运行。我想尽可能多地学习这个主题,并想知道它的作用。代码如下,谢谢你的帮助。

public void addNotify() {
    super.addNotify();
    if(thread == null) {
        thread = new Thread(this);
        addKeyListener(this);
        thread.start();
    }
}

1 个答案:

答案 0 :(得分:2)

来自JavaDocs for Container

  

通过将此容器连接到本机屏幕,可以显示此容器   资源。使容器可显示将导致其全部   孩子们可以展示。此方法由内部调用   工具包,不应该由程序直接调用。

来自JavaDocs for JComponent

  

通知此组件它现在有一个父组件。当这个   调用方法,设置父组件链   KeyboardAction事件侦听器。该方法由工具包调用   在内部,不应该由程序直接调用。

好的,但那意味着什么呢?

基本上,addNotify中的Container设置组件内部使用的事件调度程序/监视器来跟踪和处理事件。它还会将addNotify调用到它容器的所有子组件。

addNotify中的{p> JComponent会触发ancestor属性更改事件,并为该组件设置焦点横向和键绑定。

当组件添加到可显示容器(连接到本地对等方的容器)时,Container#addImpl会调用这些方法。这为他们提供了已经添加组件的通知,特别是向本地对等方添加。

这是一种很好的方法,可以知道您的组件已添加到可显示的上下文中,并且很快就会被布局和绘制。

同样地,还有一个removeNotify用于何时删除组件或从可显示的上下文中移除其父容器。