模块 java.desktop
 java.awt

类 Container

所有已实现的接口:
ImageObserver , MenuContainer , Serializable
已知子类:
BasicSplitPaneDivider , CellRendererPane , DefaultTreeCellEditor.EditorContainer , JComponent , Panel , ScrollPane , Window

public class Container extends Component
通用抽象窗口工具包 (AWT) 容器对象是可以包含其他 AWT 组件的组件。

添加到容器中的组件在列表中进行跟踪。列表的顺序将定义组件在容器中从前到后的堆叠顺序。如果在将组件添加到容器时未指定索引,它将被添加到列表的末尾(因此添加到堆叠顺序的底部)。

笔记:有关焦点子系统的详细信息,请参阅 如何使用焦点子系统The Java Tutorial 中的一节和 对焦规格 了解更多信息。

自从:
1.0
参见:
  • 构造方法详细信息

    • Container

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

    • getComponentCount

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

      注意:这个方法应该在 AWT 树锁下调用。

      返回:
      此面板中的组件数。
      自从:
      1.1
      参见:
    • countComponents

      @Deprecated public int countComponents()
      已弃用。
      从 JDK 1.1 版开始,由 getComponentCount() 取代。
      返回此容器中的组件数。
      返回:
      此容器中的组件数
    • getComponent

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

      注意:这个方法应该在 AWT 树锁下调用。

      参数:
      n - 要获取的组件的索引。
      返回:
      然后此容器中的组件。
      抛出:
      ArrayIndexOutOfBoundsException - 如果 n值不存在。
      参见:
    • getComponents

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

      注意:这个方法应该在 AWT 树锁下调用。

      返回:
      此容器中所有组件的数组。
      参见:
    • getInsets

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

      例如,一个 Frame 对象有一个对应于框架标题栏高度的顶部insets。

      返回:
      这个容器的insets。
      自从:
      1.1
      参见:
    • insets

      @Deprecated public Insets  insets()
      已弃用。
      从 JDK 1.1 版开始,由 getInsets() 取代。
      返回此容器的insets。
      返回:
      这个容器的insets
    • add

      public Component  add(Component  comp)
      将指定的组件附加到此容器的末尾。这是 addImpl(java.awt.Component, java.lang.Object, int) 的便捷方法。

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

      参数:
      comp - 要添加的组件
      返回:
      组件参数
      抛出:
      NullPointerException - 如果 compnull
      参见:
    • add

      public Component  add(String  name, Component  comp)
      将指定的组件添加到此容器。这是 addImpl(java.awt.Component, java.lang.Object, int) 的便捷方法。

      从 1.1 开始,此方法已过时。请改用方法add(Component, Object)

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

      参数:
      name - 要添加的组件的名称
      comp - 要添加的组件
      返回:
      添加的组件
      抛出:
      NullPointerException - 如果 compnull
      参见:
    • add

      public Component  add(Component  comp, int index)
      将指定的组件添加到此容器的给定位置。这是 addImpl(java.awt.Component, java.lang.Object, int) 的便捷方法。

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

      参数:
      comp - 要添加的组件
      index - 插入组件的位置,或 -1 将组件附加到末尾
      返回:
      组件comp
      抛出:
      NullPointerException - 如果 compnull
      IllegalArgumentException - 如果 index 无效(详见 addImpl(java.awt.Component, java.lang.Object, int)
      参见:
    • setComponentZOrder

      public void setComponentZOrder(Component  comp, int index)
      将指定组件移动到容器中指定的 z 顺序索引。 z-order 决定了组件被绘制的顺序;具有最高 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

      public int getComponentZOrder(Component  comp)
      返回容器内组件的 z 顺序索引。组件在 z 顺序层次结构中越高,其索引越低。具有最低 z 顺序索引的组件最后绘制,在所有其他子组件之上。
      参数:
      comp - 被查询的组件
      返回:
      组件的 z 顺序索引;否则,如果组件是 null 或不属于容器,则返回 -1
      自从:
      1.5
      参见:
    • add

      public void add(Component  comp, Object  constraints)
      将指定的组件添加到此容器的末尾。还通知布局管理器使用指定的约束对象将组件添加到此容器的布局。这是 addImpl(java.awt.Component, java.lang.Object, int) 的便捷方法。

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

      参数:
      comp - 要添加的组件
      constraints - 表示此组件布局约束的对象
      抛出:
      NullPointerException - 如果 compnull
      自从:
      1.1
      参见:
    • add

      public void add(Component  comp, Object  constraints, int index)
      在指定索引处使用指定约束将指定组件添加到此容器。还通知布局管理器使用指定的约束对象将组件添加到此容器的布局中。这是 addImpl(java.awt.Component, java.lang.Object, int) 的便捷方法。

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

      参数:
      comp - 要添加的组件
      constraints - 表示此布局约束的对象
      index - 在容器列表中插入组件的位置; -1 表示在末尾插入组件
      抛出:
      NullPointerException - 如果 compnull
      IllegalArgumentException - 如果 index 无效(详见 addImpl(java.awt.Component, java.lang.Object, int)
      参见:
    • addImpl

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

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

      GridBagLayout 类需要一个 GridBagConstraints 对象。未能传递正确类型的约束对象会导致 IllegalArgumentException

      如果当前布局管理器实现了 LayoutManager2 ,那么将在其上调用 LayoutManager2.addLayoutComponent(Component,Object) 。如果当前布局管理器未实现 LayoutManager2,并且约束是 String,则对其调用 LayoutManager.addLayoutComponent(String,Component)

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

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

      super.addImpl(comp, constraints, index)

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

      参数:
      comp - 要添加的组件
      constraints - 表示此组件布局约束的对象
      index - 在容器列表中插入组件的位置,其中 -1 表示追加到末尾
      抛出:
      IllegalArgumentException - 如果 index 无效;如果 comp 是此容器的子容器,则有效范围为 [-1, getComponentCount()-1] ;如果组件不是此容器的子组件,则有效范围为 [-1, getComponentCount()]
      IllegalArgumentException - 如果 comp 是这个容器的祖先
      IllegalArgumentException - 如果向容器添加窗口
      NullPointerException - 如果 compnull
      自从:
      1.1
      参见:
    • remove

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

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

      参数:
      index - 要删除的组件的索引
      抛出:
      ArrayIndexOutOfBoundsException - 如果 index 不在 [0, getComponentCount()-1] 范围内
      自从:
      1.1
      参见:
    • remove

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

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

      参数:
      comp - 要删除的组件
      抛出:
      NullPointerException - 如果 compnull
      参见:
    • removeAll

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

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

      参见:
    • getLayout

      public LayoutManager  getLayout()
      获取此容器的布局管理器。
      返回:
      此容器的当前布局管理器
      参见:
    • setLayout

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

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

      参数:
      mgr - 指定的布局管理器
      参见:
    • doLayout

      public void doLayout()
      使此容器布置其组件。大多数程序不应直接调用此方法,而应调用 validate 方法。
      重写:
      doLayout 在类 Component
      自从:
      1.1
      参见:
    • layout

      @Deprecated public void layout()
      已弃用。
      从 JDK 1.1 版开始,由 doLayout() 取代。
      重写:
      layout 在类 Component
    • isValidateRoot

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

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

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

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

      返回:
      此容器是否为验证根
      自从:
      1.7
      参见:
    • invalidate

      public void invalidate()
      使容器无效。

      如果安装在此容器上的 LayoutManagerLayoutManager2 接口的实例,则在其上调用 LayoutManager2.invalidateLayout(Container) 方法并提供此 Container 作为参数。

      之后此方法将此容器标记为无效,并使其祖先无效。有关详细信息,请参阅 Component.invalidate() 方法。

      重写:
      invalidate 在类 Component
      参见:
    • validate

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

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

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

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

      重写:
      validate 在类 Component
      参见:
    • validateTree

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

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

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

      重写:
      setFont 在类 Component
      参数:
      f - 成为此容器字体的字体。
      自从:
      1.0
      参见:
    • getPreferredSize

      public Dimension  getPreferredSize()
      返回此容器的首选大小。如果 Component.setPreferredSize(Dimension) 未明确设置首选大小,并且此 Container 具有 non-null LayoutManager ,则使用 LayoutManager.preferredLayoutSize(Container) 计算首选大小。

      注意:某些实现可能会缓存从 LayoutManager 返回的值。每次调用此方法时,缓存的实现不需要在LayoutManager 上调用preferredLayoutSize,而是仅在Container 无效后才查询LayoutManager

      重写:
      getPreferredSize 在类 Component
      返回:
      Dimension 的实例,表示此容器的首选大小。
      参见:
    • preferredSize

      @Deprecated public Dimension  preferredSize()
      已弃用。
      从 JDK 1.1 版开始,由 getPreferredSize() 取代。
      从类复制的描述:Component
      返回组件的首选大小。
      重写:
      preferredSize 在类 Component
      返回:
      组件的首选大小
    • getMinimumSize

      public Dimension  getMinimumSize()
      返回此容器的最小大小。如果 Component.setMinimumSize(Dimension) 未明确设置最小大小并且此 Container 具有 non-null LayoutManager ,则使用 LayoutManager.minimumLayoutSize(Container) 计算最小大小。

      注意:某些实现可能会缓存从 LayoutManager 返回的值。每次调用此方法时,缓存的实现不需要在LayoutManager 上调用minimumLayoutSize,而是仅在Container 无效后才查询LayoutManager

      重写:
      getMinimumSize 在类 Component
      返回:
      Dimension 的实例,表示此容器的最小大小。
      自从:
      1.1
      参见:
    • minimumSize

      @Deprecated public Dimension  minimumSize()
      已弃用。
      从 JDK 1.1 版开始,由 getMinimumSize() 取代。
      从类复制的描述:Component
      返回此组件的最小尺寸。
      重写:
      minimumSize 在类 Component
      返回:
      该组件的最小尺寸
    • getMaximumSize

      public Dimension  getMaximumSize()
      返回此容器的最大大小。如果 Component.setMaximumSize(Dimension) 未明确设置最大大小,并且安装在此 Container 上的 LayoutManager LayoutManager2 的实例,则使用 LayoutManager2.maximumLayoutSize(Container) 计算最大大小。

      注意:某些实现可能会缓存从 LayoutManager2 返回的值。每次调用此方法时,缓存的实现不需要在LayoutManager2上调用maximumLayoutSize,而是仅在Container无效后才查询LayoutManager2

      重写:
      getMaximumSize 在类 Component
      返回:
      Dimension 的实例,表示此容器的最大大小。
      参见:
    • 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 - 指定的图形窗口
      参见:
    • update

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

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

      public void paintComponents(Graphics  g)
      绘制此容器中的每个组件。
      参数:
      g - 图形上下文。
      参见:
    • printComponents

      public void printComponents(Graphics  g)
      打印此容器中的每个组件。
      参数:
      g - 图形上下文。
      参见:
    • addContainerListener

      public void addContainerListener(ContainerListener  l)
      添加指定的容器监听以接收来自此容器的容器事件。如果 l 为 null,则不会抛出异常并且不会执行任何操作。

      有关 AWT 线程模型的详细信息,请参阅 AWT 线程问题

      参数:
      l - 容器监听器
      参见:
    • removeContainerListener

      public void removeContainerListener(ContainerListener  l)
      删除指定的容器监听,使其不再接收来自该容器的容器事件。如果 l 为 null,则不会抛出异常并且不会执行任何操作。

      有关 AWT 线程模型的详细信息,请参阅 AWT 线程问题

      参数:
      l - 容器监听器
      参见:
    • getContainerListeners

      public ContainerListener [] getContainerListeners()
      返回在此容器上注册的所有容器监听的数组。
      返回:
      此容器的所有 ContainerListener s 或空数组(如果当前没有注册容器监听器)
      自从:
      1.4
      参见:
    • getListeners

      public <T extends EventListener > T[] getListeners(Class <T> listenerType)
      返回当前在此 Container 上注册为 FooListener 的所有对象的数组。 FooListener 是使用 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
      参见:
    • processEvent

      protected void processEvent(AWTEvent  e)
      处理此容器上的事件。如果事件是 ContainerEvent ,它会调用 processContainerEvent 方法,否则它会调用其超类的 processEvent

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

      重写:
      processEvent 在类 Component
      参数:
      e - 事件
      参见:
    • processContainerEvent

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

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

      参数:
      e - 容器事件
      参见:
    • deliverEvent

      @Deprecated public void deliverEvent(Event  e)
      已弃用。
      从 JDK 版本 1.1 开始,由 dispatchEvent(AWTEvent e) 取代
      重写:
      deliverEvent 在类 Component
      参数:
      e - 要传递的事件
    • getComponentAt

      public Component  getComponentAt(int x, int y)
      找到包含 x,y 位置的组件。如果组件中存在重叠,则返回最顶层的子组件。这是通过查找最接近索引 0 的组件来确定的,该组件声称通过 Component.contains() 包含给定点,除了具有本机对等体的组件优先于那些不具有本机对等体的组件(即轻量级组件)。
      重写:
      getComponentAt 在类 Component
      参数:
      x - 的x协调
      y - 的y协调
      返回:
      如果组件不包含该位置,则为 null。如果在请求的点处没有子组件并且该点在容器的边界内,则返回容器本身;否则返回最顶层的子级。
      自从:
      1.1
      参见:
    • locate

      @Deprecated public Component  locate(int x, int y)
      已弃用。
      从 JDK 1.1 版开始,由 getComponentAt(int, int) 取代。
      从类复制的描述:Component
      返回占据指定位置的组件(此组件或直接子组件,如果前两个组件均未占据该位置,则返回 null)。
      重写:
      locate 在类 Component
      参数:
      x - 的x协调以搜索组件
      y - 的y协调以搜索组件
      返回:
      指定位置的组件或null
    • getComponentAt

      public Component  getComponentAt(Point  p)
      获取包含指定点的组件。
      重写:
      getComponentAt 在类 Component
      参数:
      p - 重点。
      返回:
      返回包含点的组件,如果组件不包含点,则返回 null
      自从:
      1.1
      参见:
    • getMousePosition

      public Point  getMousePosition(boolean allowChildren) throws HeadlessException
      如果 Container 在鼠标指针下方,则返回鼠标指针在此 Container 的坐标空间中的位置,否则返回 null 。此方法类似于 Component.getMousePosition() ,不同之处在于它可以考虑 Container 的子级。如果 allowChildrenfalse ,只有当鼠标指针直接在 Container 上方,而不是在被儿童遮挡的部分上方时,此方法才会返回非空值。如果 allowChildrentrue 且鼠标指针位于 Container 或其任何后代上方,则此方法返回非空值。
      参数:
      allowChildren - 如果应考虑儿童则为真
      返回:
      相对于此 Component 的鼠标坐标,或 null
      抛出:
      HeadlessException - 如果 GraphicsEnvironment.isHeadless() 返回 true
      自从:
      1.5
      参见:
    • findComponentAt

      public Component  findComponentAt(int x, int y)
      定位包含指定位置的可见子组件。如果组件中存在重叠,则返回最顶层的子组件。如果包含的子组件是一个Container,该方法会继续寻找嵌套最深的子组件。在搜索过程中忽略不可见的组件。

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

      参数:
      x - 的x协调
      y - 的y协调
      返回:
      如果组件不包含该位置,则为 null。如果在请求的点处没有子组件并且该点在容器的边界内,则返回容器本身。
      自从:
      1.2
      参见:
    • findComponentAt

      public Component  findComponentAt(Point  p)
      定位包含指定点的可见子组件。如果组件中存在重叠,则返回最顶层的子组件。如果包含的子组件是一个Container,该方法会继续寻找嵌套最深的子组件。在搜索过程中忽略不可见的组件。

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

      参数:
      p - 重点。
      返回:
      如果组件不包含该位置,则为 null。如果在请求的点处没有子组件并且该点在容器的边界内,则返回容器本身。
      抛出:
      NullPointerException - 如果 pnull
      自从:
      1.2
      参见:
    • addNotify

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

      public void removeNotify()
      通过删除与本机屏幕资源的连接,使此 Container 不可显示。使容器不可显示将导致其所有子容器都不可显示。此方法由工具包内部调用,不应由程序直接调用。
      重写:
      removeNotify 在类 Component
      参见:
    • 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
      参见:
    • list

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

      容器的直接子代打印有缩进 indent+1 。这些孩子的孩子打印在 indent+2 等等。

      重写:
      list 在类 Component
      参数:
      out - 印刷作家
      indent - 要缩进的空格数
      抛出:
      NullPointerException - 如果 outnull
      自从:
      1.1
      参见:
    • setFocusTraversalKeys

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

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

      容器焦点遍历键的推荐默认值
      Identifier 意义 默认
      KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS 正常的正向键盘遍历 KEY_PRESSED 上的 TAB,KEY_PRESSED 上的 CTRL-TAB
      KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS 正常反向键盘遍历 KEY_PRESSED 上的 SHIFT-TAB,KEY_PRESSED 上的 CTRL-SHIFT-TAB
      KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS 上一个焦点遍历循环 没有任何
      KeyboardFocusManager.DOWN_CYCLE_TRAVERSAL_KEYS 向下一个焦点遍历循环 没有任何
      要禁用遍历键,请使用空 Set;推荐使用 Collections.EMPTY_SET。

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

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

      如果 keystrokes 中的任何 Object 不是 AWTKeyStroke,此方法可能会抛出 ClassCastException

      重写:
      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 事件,或者如果任何击键已经映射到另一个焦点遍历这个容器的操作
      自从:
      1.4
      参见:
    • getFocusTraversalKeys

      public Set <AWTKeyStroke > getFocusTraversalKeys(int id)
      返回此 Container 的给定遍历操作的焦点遍历键集。 (有关每个键的完整说明,请参阅 setFocusTraversalKeys。)

      如果没有为这个 Container 显式定义一组遍历键,则返回这个 Container 的父级的 Set。如果没有为此 Container 的任何祖先显式定义 Set,则返回当前 KeyboardFocusManager 的默认 Set。

      重写:
      getFocusTraversalKeys 在类 Component
      参数:
      id - KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS、KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS、KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS 或 KeyboardFocusManager.DOWN_CYCLE_TRAVERSAL_KEYS 之一
      返回:
      指定操作的 AWTKeyStrokes 集合。 Set 将不可修改,并且可能为空。永远不会返回 null。
      抛出:
      IllegalArgumentException - 如果 id 不是 KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS、KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS、KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS 或 KeyboardFocusManager.DOWN_CYCLE_TRAVERSAL_KEYS 之一
      自从:
      1.4
      参见:
    • areFocusTraversalKeysSet

      public boolean areFocusTraversalKeysSet(int id)
      返回是否已为此 Container 显式定义给定焦点遍历操作的焦点遍历键集。如果此方法返回 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 如果给定焦点遍历操作的焦点遍历键集已经明确定义给这个组件; 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的焦点遍历循环的焦点循环根。每个焦点遍历循环只有一个焦点循环根,每个不是焦点循环根的容器只属于一个焦点遍历循环。作为焦点循环根的容器属于两个循环:一个以容器本身为根,另一个以容器最近的焦点循环根祖先为根。在这种情况下,此方法将为这两个容器返回 true
      重写:
      isFocusCycleRoot 在类 Component
      参数:
      container - 要测试的容器
      返回:
      true 如果指定的 Container 是该 Container 的焦点循环根; false否则
      自从:
      1.4
      参见:
    • setFocusTraversalPolicy

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

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

      参数:
      policy - 此 Container 的新焦点遍历策略
      自从:
      1.4
      参见:
    • getFocusTraversalPolicy

      public FocusTraversalPolicy  getFocusTraversalPolicy()
      返回将管理此 Container 的子项的键盘遍历的焦点遍历策略,如果此 Container 不是焦点循环根,则返回 null。如果没有为该 Container 显式设置遍历策略,则返回该 Container 的 focus-cycle-root 祖先策略。
      返回:
      此 Container 的焦点遍历策略,如果此 Container 不是焦点循环根,则为 null。
      自从:
      1.4
      参见:
    • isFocusTraversalPolicySet

      public boolean isFocusTraversalPolicySet()
      返回是否已为此 Container 显式设置焦点遍历策略。如果此方法返回 false ,则此 Container 将从祖先那里继承其焦点遍历策略。
      返回:
      true 如果已经为这个 Container 显式设置了焦点遍历策略; false否则。
      自从:
      1.4
    • setFocusCycleRoot

      public void setFocusCycleRoot(boolean focusCycleRoot)
      设置此 Container 是否是焦点遍历循环的根。一旦焦点进入遍历循环,通常它不能通过焦点遍历离开它,除非按下向上或向下循环键之一。正常遍历仅限于此容器,以及此容器的所有非劣质焦点循环根的后代的后代。但是请注意,FocusTraversalPolicy 可能会改变这些限制。例如,ContainerOrderFocusTraversalPolicy 支持隐式向下循环遍历。

      指定此 Container 的子项的遍历顺序的另一种方法是使此 Container 成为 焦点遍历策略提供者

      参数:
      focusCycleRoot - 指示此 Container 是否是焦点遍历循环的根
      自从:
      1.4
      参见:
    • isFocusCycleRoot

      public boolean isFocusCycleRoot()
      返回此 Container 是否是焦点遍历循环的根。一旦焦点进入遍历循环,通常它不能通过焦点遍历离开它,除非按下向上或向下循环键之一。正常遍历仅限于此容器,以及此容器的所有非劣质焦点循环根的后代的后代。但是请注意,FocusTraversalPolicy 可能会改变这些限制。例如,ContainerOrderFocusTraversalPolicy 支持隐式向下循环遍历。
      返回:
      此 Container 是否是焦点遍历循环的根
      自从:
      1.4
      参见:
    • setFocusTraversalPolicyProvider

      public final void setFocusTraversalPolicyProvider(boolean provider)
      设置此容器是否将用于提供焦点遍历策略。此属性为 true 的容器将用于获取焦点遍历策略,而不是最近的焦点循环根祖先。
      参数:
      provider - 指示此容器是否将用于提供焦点遍历策略
      自从:
      1.5
      参见:
    • isFocusTraversalPolicyProvider

      public final boolean isFocusTraversalPolicyProvider()
      返回此容器是否提供焦点遍历策略。如果此属性设置为 true,则当键盘焦点管理器在容器层次结构中搜索焦点遍历策略并在具有此属性的任何其他容器之前遇到此容器时 true 或焦点循环根,则将使用其焦点遍历策略而不是焦点循环根的策略.
      返回:
      true 如果此容器提供焦点遍历策略,false 否则
      自从:
      1.5
      参见:
    • transferFocusDownCycle

      public void transferFocusDownCycle()
      将焦点向下转移一个焦点遍历周期。如果这个Container是一个焦点循环根,那么焦点所有者被设置为这个Container默认要聚焦的Component,当前焦点循环根被设置为这个Container。如果此 Container 不是焦点循环根,则不会发生焦点遍历操作。
      自从:
      1.4
      参见:
    • applyComponentOrientation

      public void applyComponentOrientation(ComponentOrientation  o)
      设置此容器及其中包含的所有组件的 ComponentOrientation 属性。

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

      重写:
      applyComponentOrientation 在类 Component
      参数:
      o - 此容器及其中包含的组件的新组件方向。
      抛出:
      NullPointerException - 如果 orientation 为空。
      自从:
      1.4
      参见:
    • addPropertyChangeListener

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

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

      重写:
      addPropertyChangeListener 在类 Component
      参数:
      listener - 要添加的 PropertyChangeListener
      参见:
    • addPropertyChangeListener

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

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

      重写:
      addPropertyChangeListener 在类 Component
      参数:
      propertyName - 上面列出的属性名称之一
      listener - 要添加的 PropertyChangeListener
      参见: