模块  java.desktop
软件包  java.awt

Class Container

    • 构造方法详细信息

      • Container

        public Container()
        构造一个新的Container。 容器可以直接扩展,但在这种情况下是轻量级的,并且必须由本机组件树中较高位置的父级包含。 (例如Frame)。
    • 方法详细信息

      • getComponentCount

        public int getComponentCount()
        获取此面板中的组件数。

        注意:此方法应在AWT树锁下调用。

        结果
        此面板中的组件数量。
        从以下版本开始:
        1.1
        另请参见:
        getComponent(int)Component.getTreeLock()
      • countComponents

        @Deprecatedpublic int countComponents()
        Deprecated.
        As of JDK version 1.1, replaced by getComponentCount().
        返回此容器中的组件数。
        结果
        此容器中的组件数
      • getComponent

        public Component getComponent​(int n)
        获取此容器中的第n个组件。

        注意:此方法应在AWT树锁下调用。

        参数
        n - 要获取的组件的索引。
        结果
        这个容器中的 n 组件。
        异常
        ArrayIndexOutOfBoundsException - 如果第n 值不存在。
        另请参见:
        Component.getTreeLock()
      • getComponents

        public Component[] getComponents()
        获取此容器中的所有组件。

        注意:此方法应在AWT树锁下调用。

        结果
        此容器中所有组件的数组。
        另请参见:
        Component.getTreeLock()
      • getInsets

        public Insets getInsets()
        确定此容器的insets,它指示容器边框的大小。

        例如, Frame对象的顶部插入对应于框架标题栏的高度。

        结果
        这个容器的插图。
        从以下版本开始:
        1.1
        另请参见:
        InsetsLayoutManager
      • insets

        @Deprecatedpublic Insets insets()
        Deprecated.
        As of JDK version 1.1, replaced by getInsets().
        返回此容器的insets。
        结果
        这个容器的插图
      • setComponentZOrder

        public void setComponentZOrder​(Component comp,                               int index)
        将指定的组件移动到容器中指定的z-order索引。 z顺序决定了组件的绘制顺序; 首先是具有最高z次序涂料的组件,最后是具有最低z次序涂料的组件。 在组件重叠的情况下,具有较低z次序的组件在具有较高z次序的组件上绘制。

        如果组件是某个其他容器的子组件,则在将其添加到此容器之前将其从该容器中删除。 此方法与java.awt.Container.add(Component, int)之间的重要区别在于,除非必要且底层本机窗口系统允许,否则此方法在从组件中删除它时不会调用removeNotify 这样,如果组件具有键盘焦点,则在移动到新位置时它会保持焦点。

        此属性保证仅适用于轻量级非Container组件。

        此方法更改与布局相关的信息,因此使组件层次结构无效。

        注意 :并非所有平台都支持在不调用removeNotify情况下将重量级组件的z顺序从一个容器更改为另一个容器。 无法检测平台是否支持此功能,因此开发人员不应做出任何假设。

        参数
        comp - 要移动的组件
        index - 容器列表中插入组件的位置,其中 getComponentCount()附加到末尾
        异常
        NullPointerException - 如果 compnull
        IllegalArgumentException - 如果 comp是容器的父母之一
        IllegalArgumentException -如果 index不在范围 [0, getComponentCount()]用于容器之间移动时,或不在范围 [0, getComponentCount()-1]用于容器内部移动
        IllegalArgumentException - 如果向自身添加容器
        IllegalArgumentException - 如果将 Window添加到容器中
        从以下版本开始:
        1.5
        另请参见:
        getComponentZOrder(java.awt.Component)invalidate()
      • getComponentZOrder

        public int getComponentZOrder​(Component comp)
        返回容器内组件的z顺序索引。 组件在z顺序层次结构中越高,其索引越低。 具有最低z顺序索引的组件最后绘制,高于所有其他子组件。
        参数
        comp - 正在查询的组件
        结果
        组件的z次序索引; 否则返回-1如果组件是null或不属于容器
        从以下版本开始:
        1.5
        另请参见:
        setComponentZOrder(java.awt.Component, int)
      • addImpl

        protected void addImpl​(Component comp,                       Object constraints,                       int index)
        将指定的组件添加到指定索引处的此容器中。 此方法还通知布局管理器使用指定的约束对象通过addLayoutComponent方法将组件添加到此容器的布局中。

        约束由正在使用的特定布局管理器定义。 例如, BorderLayout类定义了五个约束: BorderLayout.NORTHBorderLayout.SOUTHBorderLayout.EASTBorderLayout.WEST ,和BorderLayout.CENTER

        GridBagLayout类需要GridBagConstraints对象。 如果未能传递正确类型的约束对象,则会产生IllegalArgumentException

        如果当前布局管理器实现LayoutManager2 ,则在其上调用LayoutManager2.addLayoutComponent(Component,Object) 如果当前布局管理器未实现LayoutManager2 ,并且约束为String ,则会在其上调用LayoutManager.addLayoutComponent(String,Component)

        如果组件不是此容器的祖先且具有非null父级,则在将其添加到此容器之前,将从其当前父级中删除该组件。

        如果程序需要跟踪对容器的每个添加请求,则这是覆盖的方法,因为所有其他添加方法都遵循此方法。 覆盖方法通常应该包括对超类的方法版本的调用:

        super.addImpl(comp, constraints, index)

        此方法更改与布局相关的信息,因此使组件层次结构无效。 如果已显示容器,则必须在此后验证层次结构以显示添加的组件。

        参数
        comp - 要添加的组件
        constraints - 表示此组件的布局约束的对象
        index - 容器列表中插入组件的位置,其中 -1表示追加到末尾
        异常
        IllegalArgumentException - 如果index无效; 如果comp是此容器的子级,则有效范围为[-1, getComponentCount()-1] ; 如果component不是此容器的子级,则有效范围为[-1, getComponentCount()]
        IllegalArgumentException - 如果 comp是此容器的祖先
        IllegalArgumentException - 如果向容器添加窗口
        NullPointerException - 如果 compnull
        从以下版本开始:
        1.1
        另请参见:
        add(Component)add(Component, int)add(Component, java.lang.Object)invalidate()LayoutManagerLayoutManager2
      • remove

        public void remove​(int index)
        从此容器中删除由index指定的组件。 此方法还通知布局管理器通过removeLayoutComponent方法从此容器的布局中删除组件。

        此方法更改与布局相关的信息,因此使组件层次结构无效。 如果已显示容器,则必须在此后验证层次结构以反映更改。

        参数
        index - 要删除的组件的索引
        异常
        ArrayIndexOutOfBoundsException - 如果 index不在范围 [0, getComponentCount()-1]
        从以下版本开始:
        1.1
        另请参见:
        add(java.awt.Component)invalidate()validate()getComponentCount()
      • remove

        public void remove​(Component comp)
        从此容器中删除指定的组件。 此方法还通知布局管理器通过removeLayoutComponent方法从此容器的布局中删除组件。

        此方法更改与布局相关的信息,因此使组件层次结构无效。 如果已显示容器,则必须在此后验证层次结构以反映更改。

        参数
        comp - 要删除的组件
        异常
        NullPointerException - 如果 compnull
        另请参见:
        add(java.awt.Component)invalidate()validate()remove(int)
      • removeAll

        public void removeAll()
        从此容器中删除所有组件。 此方法还通知布局管理器通过removeLayoutComponent方法从此容器的布局中删除组件。

        此方法更改与布局相关的信息,因此使组件层次结构无效。 如果已显示容器,则必须在此后验证层次结构以反映更改。

        另请参见:
        add(java.awt.Component)remove(int)invalidate()
      • setLayout

        public void setLayout​(LayoutManager mgr)
        设置此容器的布局管理器。

        此方法更改与布局相关的信息,因此使组件层次结构无效。

        参数
        mgr - 指定的布局管理器
        另请参见:
        doLayout()getLayout()invalidate()
      • layout

        @Deprecatedpublic void layout()
        Deprecated.
        As of JDK version 1.1, replaced by doLayout().
        重写:
        layout在课程 Component
      • isValidateRoot

        public boolean isValidateRoot()
        指示此容器是否为验证根

        与布局相关的更改(例如验证根后代的边界)不会影响验证根父级的布局。 这种特性使invalidate()方法在方法遇到验证根时停止使组件层次结构无效。 但是,为了保持向后兼容性,仅当java.awt.smartInvalidate系统属性值设置为true时, java.awt.smartInvalidate启用此新优化行为。

        如果组件层次结构包含验证根并且启用了新的优化invalidate()行为,则必须在先前无效的组件的验证根上调用validate()方法,以便validate()恢复层次结构的有效性。 否则,应使用顶级容器(例如Frame对象)上的validate()方法来恢复组件层次结构的有效性。

        Window类和Applet类是AWT中的验证根。 Swing引入了更多验证根。

        结果
        此容器是否为验证根
        从以下版本开始:
        1.7
        另请参见:
        invalidate()Component.invalidate()JComponent.isValidateRoot()JComponent.revalidate()
      • validate

        public void validate()
        验证此容器及其所有子组件。

        验证容器意味着布置其子组件。 与布局相关的更改(例如,设置组件的边界或将组件添加到容器)会自动使容器无效。 请注意,容器的祖先也可能无效(有关详细信息,请参阅Component.invalidate() )。因此,要恢复层次结构的有效性,应在层次结构的最顶层无效容器上调用validate()方法。

        验证容器可能是非常耗时的操作。 出于性能原因,开发人员可以推迟层次结构的验证,直到一组与布局相关的操作完成,例如在将所有子项添加到容器之后。

        如果此Container无效,则此方法将调用validateTree方法并将此Container标记为有效。 否则,不执行任何操作。

        重写:
        validateComponent
        另请参见:
        add(java.awt.Component)invalidate()isValidateRoot()JComponent.revalidate()validateTree()
      • validateTree

        protected void validateTree()
        递归地下降容器树并重新计算标记为需要的任何子树的布局(标记为无效的子树)。 应该通过调用此方法的方法提供同步: validate
        另请参见:
        doLayout()validate()
      • setFont

        public void setFont​(Font f)
        设置此容器的字体。

        此方法更改与布局相关的信息,因此使组件层次结构无效。

        重写:
        setFont在课程 Component
        参数
        f - 成为此容器字体的字体。
        从以下版本开始:
        1.0
        另请参见:
        Component.getFont()invalidate()
      • getAlignmentX

        public float getAlignmentX()
        返回沿x轴的对齐方式。 这指定了组件相对于其他组件的对齐方式。 该值应为0到1之间的数字,其中0表示沿原点对齐,1表示距离原点最远,0.5表示居中等。
        重写:
        getAlignmentX在课程 Component
        结果
        该组件的水平对齐方式
      • getAlignmentY

        public float getAlignmentY()
        返回沿y轴的对齐方式。 这指定了组件相对于其他组件的对齐方式。 该值应为0到1之间的数字,其中0表示沿原点对齐,1表示距离原点最远,0.5表示居中等。
        重写:
        getAlignmentY在课堂上 Component
        结果
        该组件的垂直对齐方式
      • paint

        public void paint​(Graphics g)
        涂抹容器。 这会将绘制转发给任何属于此容器子级的轻量级组件。 如果重新实现此方法,则应调用super.paint(g)以便正确呈现轻量级组件。 如果子组件被g中的当前剪切设置完全剪切,则paint()将不会转发给该子组件。
        重写:
        paint在课程 Component
        参数
        g - 指定的图形窗口
        另请参见:
        Component.update(Graphics)
      • update

        public void update​(Graphics g)
        更新容器。 这会将更新转发给作为此容器子级的任何轻量级组件。 如果重新实现此方法,则应调用super.update(g)以便正确呈现轻量级组件。 如果子组件被g中的当前剪切设置完全剪切,则update()将不会转发给该子组件。
        重写:
        updateComponent
        参数
        g - 指定的图形窗口
        另请参见:
        Component.update(Graphics)
      • print

        public void print​(Graphics g)
        打印容器。 这会将打印转发给作为此容器子项的任何轻量级组件。 如果重新实现此方法,则应调用super.print(g)以便正确呈现轻量级组件。 如果子组件被g中的当前剪切设置完全剪切,则print()将不会转发给该子组件。
        重写:
        print在课程 Component
        参数
        g - 指定的图形窗口
        另请参见:
        Component.update(Graphics)
      • getListeners

        public <T extends EventListener> T[] getListeners​(<T> listenerType)
        返回当前注册的所有对象的数组FooListener在这个S Container FooListener s使用addFooListener方法注册。

        您可以使用类文字指定listenerType参数,例如FooListener.class 例如,您可以使用以下代码在Container c查询其容器侦听器:

          ContainerListener[] cls = (ContainerListener[])(c.getListeners(ContainerListener.class)); 
        如果不存在此类侦听器,则此方法返回空数组。
        重写:
        getListeners在课程 Component
        参数类型
        T - 侦听器的类型
        参数
        listenerType - 请求的侦听器类型; 此参数应指定从java.util.EventListener下降的接口
        结果
        此容器上注册为 FooListener的所有对象的数组,如果未添加此类侦听器,则为空数组
        异常
        ClassCastException - 如果 listenerType未指定实现 java.util.EventListener的类或接口
        NullPointerException - 如果 listenerTypenull
        从以下版本开始:
        1.3
        另请参见:
        getContainerListeners()
      • processContainerEvent

        protected void processContainerEvent​(ContainerEvent e)
        处理在此容器上发生的容器事件,方法是将它们分派给任何已注册的ContainerListener对象。 注意:除非为此组件启用容器事件,否则不会调用此方法; 发生以下任一情况时会发生这种情况:
        • ContainerListener对象通过addContainerListener注册
        • 容器事件通过enableEvents启用

        请注意,如果事件参数为null则行为未指定,可能会导致异常。

        参数
        e - 容器事件
        另请参见:
        Component.enableEvents(long)
      • deliverEvent

        @Deprecatedpublic void deliverEvent​(Event e)
        Deprecated.
        As of JDK version 1.1, replaced by dispatchEvent(AWTEvent e)
        重写:
        deliverEventComponent
        参数
        e - 要交付的活动
      • getComponentAt

        public Component getComponentAt​(int x,                                int y)
        找到包含x,y位置的组件。 在组件中存在重叠的情况下,返回最顶层的子组件。 这是通过找到最接近索引0的组件来确定的,该组件声称通过Component.contains()声明包含给定点,除了具有本机对等的组件优先于那些没有组件的组件(即轻量级组件)。
        重写:
        getComponentAtComponent
        参数
        x - x坐标
        y - y坐标
        结果
        如果组件不包含位置,则返回null。 如果请求的点上没有子组件,并且该点在容器的边界内,则返回容器本身; 否则最重要的孩子将被退回。
        从以下版本开始:
        1.1
        另请参见:
        Component.contains(int, int)
      • locate

        @Deprecatedpublic Component locate​(int x,                        int y)
        Deprecated.
        As of JDK version 1.1, replaced by getComponentAt(int, int).
        复制自类: Component描述
        返回占用指定位置的组件(此组件或直接子组件,如果前两个都不占用该位置,则返回null)。
        重写:
        locate在课程 Component
        参数
        x - 用于搜索组件的 x坐标
        y - 用于搜索组件的 y坐标
        结果
        指定位置的组件或 null
      • getMousePosition

        public Point getMousePosition​(boolean allowChildren)                       throws HeadlessException
        如果Container位于鼠标指针下,则返回此Container坐标空间中鼠标指针的位置,否则返回null 此方法类似于Component.getMousePosition() ,但可以考虑Container的子项。 如果allowChildrenfalse ,则此方法仅在鼠标指针直接位于Container上方时才返回非空值,而不是在子Container遮挡的部分上方。 如果allowChildrentrue ,则如果鼠标指针位于Container或其任何后代true ,则此方法返回非null值。
        参数
        allowChildren - 如果应考虑儿童, allowChildren
        结果
        鼠标坐标相对于此 Component ,或为null
        异常
        HeadlessException - 如果GraphicsEnvironment.isHeadless()返回true
        从以下版本开始:
        1.5
        另请参见:
        Component.getMousePosition()
      • findComponentAt

        public Component findComponentAt​(int x,                                 int y)
        找到包含指定位置的可见子组件。 在组件中存在重叠的情况下,返回最顶层的子组件。 如果包含的子组件是Container,则此方法将继续搜索最深的嵌套子组件。 搜索期间将忽略不可见的组件。

        findComponentAt方法与getComponentAt的不同之处在于getComponentAt只搜索Container的直接子节点; 如果包含的组件是Container,则findComponentAt将搜索该子组件以查找嵌套组件。

        参数
        x - x坐标
        y - y坐标
        结果
        如果组件不包含位置,则返回null。 如果请求的点上没有子组件,并且该点在容器的边界内,则返回容器本身。
        从以下版本开始:
        1.2
        另请参见:
        Component.contains(int, int)getComponentAt(int, int)
      • findComponentAt

        public Component findComponentAt​(Point p)
        找到包含指定点的可见子组件。 在组件中存在重叠的情况下,返回最顶层的子组件。 如果包含的子组件是Container,则此方法将继续搜索最深的嵌套子组件。 搜索期间将忽略不可见的组件。

        findComponentAt方法与getComponentAt的不同之处在于getComponentAt只搜索Container的直接子节点; 如果包含的组件是Container,则findComponentAt将搜索该子组件以查找嵌套组件。

        参数
        p - 关键。
        结果
        如果组件不包含位置,则返回null。 如果请求的点上没有子组件,并且该点在容器的边界内,则返回容器本身。
        异常
        NullPointerException - 如果 pnull
        从以下版本开始:
        1.2
        另请参见:
        Component.contains(int, int)getComponentAt(int, int)
      • addNotify

        public void addNotify()
        通过将此Container连接到本机屏幕资源,可以显示此Container。 使容器可显示将使其所有子容器可显示。 此方法由工具包在内部调用,不应由程序直接调用。
        重写:
        addNotifyComponent
        另请参见:
        Component.isDisplayable()removeNotify()
      • removeNotify

        public void removeNotify()
        通过删除与其本机屏幕资源的连接,使此Container不可显示。 使容器不可显示将导致其所有儿童无法显示。 该方法由工具包在内部调用,不应由程序直接调用。
        重写:
        removeNotify在课堂上 Component
        另请参见:
        Component.isDisplayable()addNotify()
      • isAncestorOf

        public boolean isAncestorOf​(Component c)
        检查组件是否包含在此容器的组件层次结构中。
        参数
        c - 组件
        结果
        true如果是祖先; 否则为false
        从以下版本开始:
        1.1
      • paramString

        protected String paramString()
        返回表示此Container的状态的字符串。 此方法仅用于调试目的,返回字符串的内容和格式可能因实现而异。 返回的字符串可能为空,但可能不是null
        重写:
        paramString在课程 Component
        结果
        此容器的参数字符串
      • list

        public void list​(PrintStream out,                 int indent)
        将此容器的列表打印到指定的输出流。 列表从指定的缩进开始。

        容器的直接子项印有缩进号indent+1 这些孩子的孩子印在indent+2 ,依此类推。

        重写:
        list在课程 Component
        参数
        out - 打印流
        indent - 要缩进的空格数
        异常
        NullPointerException - 如果 outnull
        从以下版本开始:
        1.0
        另请参见:
        Component.list(java.io.PrintStream, int)
      • list

        public void list​(PrintWriter out,                 int indent)
        从指定的缩进开始将列表打印到指定的打印编写器。

        容器的直接子项打印出的缩进为indent+1 这些孩子的孩子印在indent+2 ,依此类推。

        重写:
        list在课程 Component
        参数
        out - 印刷作家
        indent - 要缩进的空格数
        异常
        NullPointerException - 如果 outnull
        从以下版本开始:
        1.1
        另请参见:
        Component.list(java.io.PrintWriter, int)
      • setFocusTraversalKeys

        public void setFocusTraversalKeys​(int id,                                  Set<? extends AWTKeyStroke> keystrokes)
        为此Container的给定遍历操作设置焦点遍历键。

        Container的焦点遍历键的默认值取决于实现。 Sun建议特定本机平台的所有实现都使用相同的默认值。 下面列出了Windows和Unix的建议。 这些建议用于Sun AWT实现。

        Recommended default values for a Container's focus traversal keys Identifier Meaning Default KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS Normal forward keyboard traversal TAB on KEY_PRESSED, CTRL-TAB on KEY_PRESSED KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS Normal reverse keyboard traversal SHIFT-TAB on KEY_PRESSED, CTRL-SHIFT-TAB on KEY_PRESSED KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS Go up one focus traversal cycle none KeyboardFocusManager.DOWN_CYCLE_TRAVERSAL_KEYS Go down one focus traversal cycle none
        要禁用遍历键,请使用空集; 建议使用Collections.EMPTY_SET。

        使用AWTKeyStroke API,客户端代码可以指定焦点遍历操作将在两个特定KeyEvent,KEY_PRESSED或KEY_RELEASED中的哪一个上进行。 但是,无论指定哪个KeyEvent,与焦点遍历键相关的所有KeyEvent(包括关联的KEY_TYPED事件)都将被使用,并且不会被分派到任何Container。 将KEY_TYPED事件指定为映射到焦点遍历操作或将同一事件映射到多个默认焦点遍历操作是一个运行时错误。

        如果为Set指定了null值,则此Container将从其父级继承Set。 如果此Container的所有祖先都为Set指定了null,则使用当前KeyboardFocusManager的默认Set。

        这种方法可能抛出ClassCastException如有Objectkeystrokes不是AWTKeyStroke

        重写:
        setFocusTraversalKeys在类 Component
        参数
        id - KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS,KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS,KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS或KeyboardFocusManager.DOWN_CYCLE_TRAVERSAL_KEYS之一
        keystrokes - 指定操作的AWTKeyStroke集
        异常
        IllegalArgumentException - 如果id不是KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS,KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS,KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS或KeyboardFocusManager.DOWN_CYCLE_TRAVERSAL_KEYS之一,或者键击包含null,或者任何击键表示KEY_TYPED事件,或者任何击键已经映射到另一个焦点遍历此Container的操作
        从以下版本开始:
        1.4
        另请参见:
        getFocusTraversalKeys(int)KeyboardFocusManager.FORWARD_TRAVERSAL_KEYSKeyboardFocusManager.BACKWARD_TRAVERSAL_KEYSKeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYSKeyboardFocusManager.DOWN_CYCLE_TRAVERSAL_KEYS
      • areFocusTraversalKeysSet

        public boolean areFocusTraversalKeysSet​(int id)
        返回是否已为此Container显式定义了给定焦点遍历操作的焦点遍历键Set。 如果此方法返回false ,则此Container将从祖先或当前KeyboardFocusManager继承Set。
        重写:
        areFocusTraversalKeysSet ,类 Component
        参数
        id - KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS,KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS,KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS或KeyboardFocusManager.DOWN_CYCLE_TRAVERSAL_KEYS之一
        结果
        true如果已为此Component明确定义了给定焦点遍历操作的焦点遍历键集; 否则为false
        异常
        IllegalArgumentException - 如果id不是KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS,KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS,KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS或KeyboardFocusManager.DOWN_CYCLE_TRAVERSAL_KEYS之一
        从以下版本开始:
        1.4
      • isFocusCycleRoot

        public boolean isFocusCycleRoot​(Container container)
        返回指定的Container是否是此Container焦点遍历循环的焦点循环根。 每个焦点遍历循环仅具有单个焦点循环根,并且不是焦点循环根的每个Container仅属于单个焦点遍历循环。 作为焦点循环根的容器属于两个循环:一个以Container本身为根,另一个以Container最近的焦点循环根祖先为根。 在这种情况下,此方法将为这两个容器返回true
        重写:
        isFocusCycleRoot在课程 Component
        参数
        container - 要测试的容器
        结果
        true如果指定的Container是此Container的焦点true根; 否则为false
        从以下版本开始:
        1.4
        另请参见:
        isFocusCycleRoot()
      • setFocusTraversalPolicy

        public void setFocusTraversalPolicy​(FocusTraversalPolicy policy)
        如果此Container是焦点循环根,则设置将管理此Container的子项的键盘遍历的焦点遍历策略。 如果参数为null,则此Container从其焦点循环根祖先继承其策略。 如果参数为非null,则此策略将由所有没有自己的键盘遍历策略的焦点循环根子节点继承(将递归地,它们的焦点循环根子节点)。

        如果此Container不是焦点循环根,则将记住该策略,但此Container或任何其他Container不会使用或继承该策略,直到此Container成为焦点循环根。

        参数
        policy - 此Container的新焦点遍历策略
        从以下版本开始:
        1.4
        另请参见:
        getFocusTraversalPolicy()setFocusCycleRoot(boolean)isFocusCycleRoot(java.awt.Container)
      • isFocusTraversalPolicySet

        public boolean isFocusTraversalPolicySet()
        返回是否已为此Container显式设置焦点遍历策略。 如果此方法返回false ,则此Container将从祖先继承其焦点遍历策略。
        结果
        true如果已为此Container明确设置了焦点遍历策略; 否则为false
        从以下版本开始:
        1.4
      • isFocusCycleRoot

        public boolean isFocusCycleRoot()
        返回此Container是否是焦点遍历循环的根。 一旦焦点进入遍历循环,通常它不能通过焦点遍历离开它,除非按下其中一个向上或向下循环键。 正常遍历仅限于此Container,并且所有这些Container的后代都不是次要焦点循环根的后代。 但请注意,FocusTraversalPolicy可能会限制这些限制。 例如,ContainerOrderFocusTraversalPolicy支持隐式下行循环遍历。
        结果
        此Container是否是焦点遍历循环的根
        从以下版本开始:
        1.4
        另请参见:
        setFocusCycleRoot(boolean)setFocusTraversalPolicy(java.awt.FocusTraversalPolicy)getFocusTraversalPolicy()ContainerOrderFocusTraversalPolicy
      • transferFocusDownCycle

        public void transferFocusDownCycle()
        将焦点转移到一个焦点遍历循环。 如果此Container是焦点循环根,则焦点所有者将设置为此Container的默认Component以进行焦点,并将当前焦点循环根设置为此Container。 如果此Container不是焦点循环根,则不会发生焦点遍历操作。
        从以下版本开始:
        1.4
        另请参见:
        Component.requestFocus()isFocusCycleRoot(java.awt.Container)setFocusCycleRoot(boolean)
      • addPropertyChangeListener

        public void addPropertyChangeListener​(PropertyChangeListener listener)
        将PropertyChangeListener添加到侦听器列表。 侦听器已注册此类的所有绑定属性,包括以下内容:
        • 这个Container的字体(“font”)
        • 这个Container的背景颜色(“背景”)
        • 这个Container的前景色(“前景”)
        • 这个容器的可聚焦性(“可聚焦”)
        • 此Container的焦点遍历键启用状态(“focusTraversalKeysEnabled”)
        • 这个容器的FORWARD_TRAVERSAL_KEYS(“forwardFocusTraversalKeys”)的集合
        • 这个Container的一套BACKWARD_TRAVERSAL_KEYS(“backwardFocusTraversalKeys”)
        • 这个容器的UP_CYCLE_TRAVERSAL_KEYS(“upCycleFocusTraversalKeys”)的集合
        • 这个Container的DOWN_CYCLE_TRAVERSAL_KEYS(“downCycleFocusTraversalKeys”)
        • 这个Container的焦点遍历政策(“focusTraversalPolicy”)
        • 这个Container的焦点循环根状态(“focusCycleRoot”)
        请注意,如果此Container继承绑定属性,则不会触发任何事件以响应继承属性的更改。

        如果listener为null,则不会抛出异常并且不执行任何操作。

        重写:
        addPropertyChangeListenerComponent
        参数
        listener - 要添加的PropertyChangeListener
        另请参见:
        Component.removePropertyChangeListener(java.beans.PropertyChangeListener)addPropertyChangeListener(java.lang.String,java.beans.PropertyChangeListener)
      • addPropertyChangeListener

        public void addPropertyChangeListener​(String propertyName,                                      PropertyChangeListener listener)
        将PropertyChangeListener添加到特定属性的侦听器列表中。 指定的属性可以是用户定义的,也可以是以下默认值之一:
        • 这个Container的字体(“font”)
        • 这个Container的背景颜色(“背景”)
        • 这个Container的前景色(“前景”)
        • 这个容器的可聚焦性(“可聚焦”)
        • 此Container的焦点遍历键启用状态(“focusTraversalKeysEnabled”)
        • 这个容器的FORWARD_TRAVERSAL_KEYS(“forwardFocusTraversalKeys”)的集合
        • 这个Container的一套BACKWARD_TRAVERSAL_KEYS(“backwardFocusTraversalKeys”)
        • 这个容器的UP_CYCLE_TRAVERSAL_KEYS(“upCycleFocusTraversalKeys”)的集合
        • 这个Container的DOWN_CYCLE_TRAVERSAL_KEYS(“downCycleFocusTraversalKeys”)
        • 这个Container的焦点遍历政策(“focusTraversalPolicy”)
        • 这个Container的焦点循环根状态(“focusCycleRoot”)
        • 此Container的焦点遍历策略提供者状态(“focusTraversalPolicyProvider”)
        • 此Container的焦点遍历策略提供者状态(“focusTraversalPolicyProvider”)
        请注意,如果此Container继承绑定属性,则不会触发任何事件以响应继承属性的更改。

        如果listener为null,则不会抛出异常并且不执行任何操作。

        重写:
        addPropertyChangeListenerComponent
        参数
        propertyName - 上面列出的其中一个属性
        listener - 要添加的PropertyChangeListener
        另请参见:
        addPropertyChangeListener(java.beans.PropertyChangeListener), Component.removePropertyChangeListener(java.beans.PropertyChangeListener)