Module java.desktop

Class BeanContextSupport

java.lang.Object
java.beans.beancontext.BeanContextChildSupport
java.beans.beancontext.BeanContextSupport
所有已实现的接口:
BeanContext, BeanContextChild, BeanContextServiceRevokedListener, BeanContextServicesListener, DesignMode, PropertyChangeListener, VetoableChangeListener, Visibility, Serializable, Iterable, Collection, EventListener
直接已知的子类:
BeanContextServicesSupport

public class BeanContextSupport extends BeanContextChildSupport implements BeanContext, Serializable, PropertyChangeListener, VetoableChangeListener
这个辅助类提供了java.beans.beancontext.BeanContext接口的实用实现。

由于这个类直接实现了BeanContext接口,所以这个类可以,也应该通过继承这个实现类或通过从另一个实例委托这个类来使用。

自1.2版本起:
1.2
参见:
  • Field Details

    • children

      protected transient HashMap<Object,BeanContextSupport.BCSChild> children
      protected HashMap children字段的所有访问都应该在该对象上同步。
    • bcmListeners

      protected transient ArrayList<BeanContextMembershipListener> bcmListeners
      protected ArrayList bcmListeners字段的所有访问都应该在该对象上同步。
    • locale

      protected Locale locale
      这个BeanContext的当前区域设置。
    • okToUseGui

      protected boolean okToUseGui
      一个指示该实例是否现在可以渲染GUI的boolean
    • designTime

      protected boolean designTime
      一个指示该对象当前是否处于设计时模式的boolean
  • Constructor Details

    • BeanContextSupport

      public BeanContextSupport(BeanContext peer, Locale lcle, boolean dTime, boolean visible)
      构造一个BeanContextSupport实例
      参数:
      peer - 我们为其提供实现的对等BeanContext,如果此对象是其自身对等,则为null
      lcle - 此BeanContext的当前区域设置。如果lclenull,则将默认区域设置为BeanContext实例。
      dTime - 初始状态,如果处于设计模式,则为true,如果处于运行时,则为false
      visible - 初始可见性。
      参见:
    • BeanContextSupport

      public BeanContextSupport(BeanContext peer, Locale lcle, boolean dtime)
      使用指定的区域设置和设计模式创建一个实例。
      参数:
      peer - 我们为其提供实现的对等BeanContext,如果此对象是其自身对等,则为null
      lcle - 此BeanContext的当前区域设置。如果lclenull,则将默认区域设置为BeanContext实例。
      dtime - 初始状态,如果处于设计模式,则为true,如果处于运行时,则为false
      参见:
    • BeanContextSupport

      public BeanContextSupport(BeanContext peer, Locale lcle)
      使用指定的区域设置创建一个实例
      参数:
      peer - 我们为其提供实现的对等BeanContext,如果此对象是其自身对等,则为null
      lcle - 此BeanContext的当前区域设置。如果lclenull,则将默认区域设置为BeanContext实例。
      参见:
    • BeanContextSupport

      public BeanContextSupport(BeanContext peer)
      使用默认区域设置创建一个实例
      参数:
      peer - 我们为其提供实现的对等BeanContext,如果此对象是其自身对等,则为null
    • BeanContextSupport

      public BeanContextSupport()
      创建一个不是另一个对象的代理的实例
  • Method Details

    • getBeanContextPeer

      public BeanContext getBeanContextPeer()
      获取此对象提供实现的BeanContext实例。
      返回:
      BeanContext实例
    • instantiateChild

      public Object instantiateChild(String beanName) throws IOException, ClassNotFoundException

      instantiateChild方法是BeanContext中的一个便利钩子,用于简化将Bean嵌套实例化到BeanContext中的任务。

      beanName参数的语义由java.beans.Beans.instantiate定义。

      指定者:
      instantiateChild 在接口 BeanContext
      参数:
      beanName - 要在此BeanContext中实例化的Bean的名称
      返回:
      新对象
      抛出:
      IOException - 如果在反序列化Bean时发生I/O错误
      ClassNotFoundException - 如果beanName参数标识的类未找到
    • size

      public int size()
      获取当前嵌套在此BeanContext中的子项数。
      指定者:
      size 在接口 Collection
      返回:
      子项数
    • isEmpty

      public boolean isEmpty()
      报告此BeanContext是否为空。当包含零个嵌套子项时,BeanContext被视为空。
      指定者:
      isEmpty 在接口 Collection
      返回:
      如果没有子项
    • contains

      public boolean contains(Object o)
      确定指定对象当前是否是此BeanContext的子项。
      指定者:
      contains 在接口 Collection
      参数:
      o - 要查询的对象
      返回:
      如果此对象是子项
    • containsKey

      public boolean containsKey(Object o)
      确定指定对象当前是否是此BeanContext的子项。
      参数:
      o - 要查询的对象
      返回:
      如果此对象是子项
    • iterator

      public Iterator<Object> iterator()
      获取当前嵌套在此BeanContext中的所有JavaBean或BeanContext实例。
      指定者:
      iterator 在接口 Collection
      指定者:
      iterator 在接口 Iterable
      返回:
      嵌套子项的Iterator
    • toArray

      public Object[] toArray()
      获取当前嵌套在此BeanContext中的所有JavaBean或BeanContext实例。
      指定者:
      toArray 在接口 Collection
      返回:
      一个数组,其运行时组件类型Object,包含此集合中的所有元素
    • toArray

      public Object[] toArray(Object[] arry)
      获取包含与arry中包含的类型匹配的所有子项的数组。
      指定者:
      toArray 在接口 Collection
      参数:
      arry - 感兴趣的对象类型数组
      返回:
      子项数组
    • createBCSChild

      protected BeanContextSupport.BCSChild createBCSChild(Object targetChild, Object peer)

      子类可以重写此方法,以插入其自己的Child子类,而无需重写add()或其他将子项添加到集合中的Collection方法。

      参数:
      targetChild - 代表创建Child的子项
      peer - 如果targetChild和peer通过BeanContextProxy的实现相关,则为对等项
      返回:
      不重写集合方法的特定于子类型的Child子类
    • add

      public boolean add(Object targetChild)
      在此BeanContext中添加/嵌套一个子项。

      作为java.beans.Beans.instantiate()的副作用调用。如果子对象不适合添加,则此方法会抛出IllegalStateException。

      指定者:
      add 在接口 Collection
      参数:
      targetChild - 要嵌套在此BeanContext中的子对象
      返回:
      如果成功添加子项,则为true。
      参见:
    • remove

      public boolean remove(Object targetChild)
      从此BeanContext中移除一个子项。如果子对象不适合添加,则此方法会抛出IllegalStateException。
      指定者:
      remove 在接口 Collection
      参数:
      targetChild - 要移除的子对象
      返回:
      如果调用导致删除了一个元素,则为true
      参见:
    • remove

      protected boolean remove(Object targetChild, boolean callChildSetBC)
      由意外的setBeanContextremove()调用引起的移除时使用的内部移除。
      参数:
      targetChild - 要移除的JavaBean、BeanContext或对象
      callChildSetBC - 用于指示应通知子项它不再嵌套在此BeanContext中。
      返回:
      在被移除之前是否存在
    • containsAll

      public boolean containsAll(Collection c)
      测试指定Collection中的所有对象是否都是此BeanContext的子项。
      指定者:
      containsAll 在接口 Collection
      参数:
      c - 指定的Collection
      返回值:
      如果集合中的所有对象都是此BeanContext的子级,则返回true,否则返回false。
      参见:
    • addAll

      public boolean addAll(Collection c)
      将Collection添加到子级集合(不支持),实现必须在层次结构锁和"children"受保护字段上同步
      指定者:
      addAll 在接口 Collection
      参数:
      c - 包含要添加到此集合中的元素的集合
      返回值:
      此实现无条件地抛出UnsupportedOperationException
      抛出:
      UnsupportedOperationException - 此实现无条件地抛出
      参见:
    • removeAll

      public boolean removeAll(Collection c)
      删除所有指定的子级(不支持),实现必须在层次结构锁和"children"受保护字段上同步
      指定者:
      removeAll 在接口 Collection
      参数:
      c - 包含要从此集合中删除的元素的集合
      返回值:
      此实现无条件地抛出UnsupportedOperationException
      抛出:
      UnsupportedOperationException - 此实现无条件地抛出
      参见:
    • retainAll

      public boolean retainAll(Collection c)
      保留仅指定的子级(不支持),实现必须在层次结构锁和"children"受保护字段上同步
      指定者:
      retainAll 在接口 Collection
      参数:
      c - 包含要在此集合中保留的元素的集合
      返回值:
      此实现无条件地抛出UnsupportedOperationException
      抛出:
      UnsupportedOperationException - 此实现无条件地抛出
      参见:
    • clear

      public void clear()
      清除子级(不支持),实现必须在层次结构锁和"children"受保护字段上同步
      指定者:
      clear 在接口 Collection
      抛出:
      UnsupportedOperationException - 此实现无条件地抛出
    • addBeanContextMembershipListener

      public void addBeanContextMembershipListener(BeanContextMembershipListener bcml)
      添加一个BeanContextMembershipListener
      指定者:
      addBeanContextMembershipListener 在接口 BeanContext
      参数:
      bcml - 要添加的BeanContextMembershipListener
      抛出:
      NullPointerException - 如果参数为null
    • removeBeanContextMembershipListener

      public void removeBeanContextMembershipListener(BeanContextMembershipListener bcml)
      移除一个BeanContextMembershipListener
      指定者:
      removeBeanContextMembershipListener 在接口 BeanContext
      参数:
      bcml - 要移除的BeanContextMembershipListener
      抛出:
      NullPointerException - 如果参数为null
    • getResourceAsStream

      public InputStream getResourceAsStream(String name, BeanContextChild bcc)
      从接口复制的描述: BeanContext
      类似于java.lang.ClassLoader.getResourceAsStream(),此方法允许BeanContext实现在子Component和底层ClassLoader之间插入行为。
      指定者:
      getResourceAsStream 在接口 BeanContext
      参数:
      name - 请求的资源的名称。
      bcc - 发出请求的子对象。
      返回值:
      作为InputStream的请求资源
      抛出:
      NullPointerException - 如果参数为null
    • getResource

      public URL getResource(String name, BeanContextChild bcc)
      从接口复制的描述: BeanContext
      类似于java.lang.ClassLoader.getResource(),此方法允许BeanContext实现在子Component和底层ClassLoader之间插入行为。
      指定者:
      getResource 在接口 BeanContext
      参数:
      name - 请求的资源的名称。
      bcc - 发出请求的子对象。
      返回值:
      作为InputStream的请求资源
    • setDesignTime

      public void setDesignTime(boolean dTime)
      设置此BeanContext的新设计时值。
      指定者:
      setDesignTime 在接口 DesignMode
      参数:
      dTime - 新的设计时值
      参见:
    • isDesignTime

      public boolean isDesignTime()
      报告此对象当前是否处于设计时模式。
      指定者:
      isDesignTime 在接口 DesignMode
      返回值:
      如果处于设计时模式,则返回true,否则返回false
    • setLocale

      public void setLocale(Locale newLocale) throws PropertyVetoException
      设置此BeanContext的区域设置。
      参数:
      newLocale - 新的区域设置。如果newLocale为null,则此方法调用将不起作用。
      抛出:
      PropertyVetoException - 如果新值被拒绝
    • getLocale

      public Locale getLocale()
      获取此BeanContext的区域设置。
      返回值:
      BeanContext的当前区域设置
    • needsGui

      public boolean needsGui()

      通常从环境中调用此方法,以确定实现者是否"需要"GUI。

      此处使用的算法测试BeanContextPeer及其当前子级,以确定它们是否为容器、组件,或者是否实现Visibility并返回needsGui() == true。

      指定者:
      needsGui 在接口 Visibility
      返回值:
      如果实现者需要GUI,则返回true
    • dontUseGui

      public void dontUseGui()
      通知此实例可能不再呈现GUI。
      指定者:
      dontUseGui 在接口 Visibility
    • okToUseGui

      public void okToUseGui()
      通知此实例现在可以渲染GUI
      指定者:
      okToUseGui 在接口 Visibility
    • avoidingGui

      public boolean avoidingGui()
      用于确定BeanContext子级是否避免使用其GUI。
      指定者:
      avoidingGui 在接口 Visibility
      返回:
      此实例是否避免使用其GUI?
      参见:
    • isSerializing

      public boolean isSerializing()
      BeanContext是否正在被序列化的过程中?
      返回:
      如果此BeanContext当前正在被序列化
    • bcsChildren

      protected Iterator<BeanContextSupport.BCSChild> bcsChildren()
      返回此BeanContext的所有子级的迭代器。
      返回:
      所有当前BCSChild值的迭代器
    • bcsPreSerializationHook

      protected void bcsPreSerializationHook(ObjectOutputStream oos) throws IOException
      在defaultWriteObject()之后但在当前可序列化子级的序列化之前由writeObject调用。子类可以重写此方法,在此超类序列化子级之前执行其状态的自定义序列化。但是,子类不应使用此方法来替换其自己的writeObject()实现(如果有的话)。
      参数:
      oos - 在序列化期间使用的ObjectOutputStream
      抛出:
      IOException - 如果序列化失败
    • bcsPreDeserializationHook

      protected void bcsPreDeserializationHook(ObjectInputStream ois) throws IOException, ClassNotFoundException
      在defaultReadObject()之后但在任何子级的反序列化之前由readObject调用。子类可以重写此方法,在此超类反序列化子级之前执行其状态的自定义反序列化。但是,子类不应使用此方法来替换其自己的readObject()实现(如果有的话)。
      参数:
      ois - 在反序列化期间使用的ObjectInputStream
      抛出:
      IOException - 如果反序列化失败
      ClassNotFoundException - 如果找不到所需的类
    • childDeserializedHook

      protected void childDeserializedHook(Object child, BeanContextSupport.BCSChild bcsc)
      由readObject调用,用于新反序列化的子级和BCSChild。
      参数:
      child - 新反序列化的子级
      bcsc - 新反序列化的BCSChild
    • serialize

      protected final void serialize(ObjectOutputStream oos, Collection<?> coll) throws IOException
      由writeObject用于序列化Collection。
      参数:
      oos - 在序列化期间使用的ObjectOutputStream
      coll - 要序列化的Collection
      抛出:
      IOException - 如果序列化失败
    • deserialize

      protected final void deserialize(ObjectInputStream ois, Collection coll) throws IOException, ClassNotFoundException
      由readObject用于反序列化集合。
      参数:
      ois - 使用的ObjectInputStream
      coll - 集合
      抛出:
      IOException - 如果反序列化失败
      ClassNotFoundException - 如果找不到所需的类
    • writeChildren

      public final void writeChildren(ObjectOutputStream oos) throws IOException
      用于序列化此BeanContext的所有子级。
      参数:
      oos - 在序列化期间使用的ObjectOutputStream
      抛出:
      IOException - 如果序列化失败
    • readChildren

      public final void readChildren(ObjectInputStream ois) throws IOException, ClassNotFoundException
      当此类的实例用作BeanContext协议(及其子协议)的实现的委托时,在反序列化期间存在'鸡和蛋'问题
      参数:
      ois - 使用的ObjectInputStream
      抛出:
      IOException - 如果反序列化失败
      ClassNotFoundException - 如果找不到所需的类
    • vetoableChange

      public void vetoableChange(PropertyChangeEvent pce) throws PropertyVetoException
      子类可以包装以监视否决子级属性更改。
      指定者:
      vetoableChange 在接口 VetoableChangeListener
      参数:
      pce - 描述事件源和已更改属性的PropertyChangeEvent对象
      抛出:
      PropertyVetoException - 如果接收方希望属性更改被回滚。
    • propertyChange

      public void propertyChange(PropertyChangeEvent pce)
      子类可以包装以监视子级属性更改。
      指定者:
      propertyChange 在接口 PropertyChangeListener
      参数:
      pce - 描述事件源和已更改属性的PropertyChangeEvent对象
    • validatePendingAdd

      protected boolean validatePendingAdd(Object targetChild)

      此类的子类可以重写或包装此方法,以添加验证行为,以便BeanContext在将子对象添加到BeanContext之前立即检查这些对象。

      参数:
      targetChild - 代表创建Child的子级
      返回:
      如果子级可以添加到此BeanContext,则为true,否则为false。
    • validatePendingRemove

      protected boolean validatePendingRemove(Object targetChild)

      此类的子类可以重写或包装此方法,以添加验证行为,以便BeanContext在将子对象从BeanContext中移除之前立即检查这些对象。

      参数:
      targetChild - 代表创建Child的子级
      返回:
      如果子级可以从此BeanContext中移除,则为true,否则为false。
    • childJustAddedHook

      protected void childJustAddedHook(Object child, BeanContextSupport.BCSChild bcsc)
      子类可以重写此方法,在添加子级后但在事件通知发生之前简单地扩展add()语义。该方法在子级同步时调用。
      参数:
      child - 子级
      bcsc - BCSChild
    • childJustRemovedHook

      protected void childJustRemovedHook(Object child, BeanContextSupport.BCSChild bcsc)
      子类可以重写此方法,在移除子级后但在事件通知发生之前简单地扩展remove()语义。该方法在子级同步时调用。
      参数:
      child - 子级
      bcsc - BCSChild
    • getChildVisibility

      protected static final Visibility getChildVisibility(Object child)
      获取与指定子级关联的组件(如果有)。
      参数:
      child - 指定的子级
      返回:
      与指定子级关联的组件(如果有)。
    • getChildSerializable

      protected static final Serializable getChildSerializable(Object child)
      获取与指定Child关联的Serializable(如果有)。
      参数:
      child - 指定的子级
      返回:
      与指定Child关联的Serializable(如果有)。
    • getChildPropertyChangeListener

      protected static final PropertyChangeListener getChildPropertyChangeListener(Object child)
      获取指定子级的PropertyChangeListener(如果有)。
      参数:
      child - 指定的子级
      返回:
      指定子级的PropertyChangeListener(如果有)。
    • getChildVetoableChangeListener

      protected static final VetoableChangeListener getChildVetoableChangeListener(Object child)
      获取指定子级的VetoableChangeListener(如果有)。
      参数:
      child - 指定的子级
      返回:
      指定子级的VetoableChangeListener(如果有)。
    • getChildBeanContextMembershipListener

      protected static final BeanContextMembershipListener getChildBeanContextMembershipListener(Object child)
      获取指定子级的BeanContextMembershipListener(如果有)。
      参数:
      child - 指定的子级
      返回:
      指定子级的BeanContextMembershipListener(如果有)。
    • getChildBeanContextChild

      protected static final BeanContextChild getChildBeanContextChild(Object child)
      获取指定子级的BeanContextChild(如果有)。
      参数:
      child - 指定的子级
      返回:
      指定子级的BeanContextChild(如果有)。
      抛出:
      IllegalArgumentException - 如果子级同时实现了BeanContextChild和BeanContextProxy
    • fireChildrenAdded

      protected final void fireChildrenAdded(BeanContextMembershipEvent bcme)
      在BeanContextMembershipListener接口上触发BeanContextshipEvent
      参数:
      bcme - 要触发的事件
    • fireChildrenRemoved

      protected final void fireChildrenRemoved(BeanContextMembershipEvent bcme)
      在BeanContextMembershipListener接口上触发BeanContextshipEvent
      参数:
      bcme - 要触发的事件
    • initialize

      protected void initialize()
      从构造函数和readObject调用的受保护方法,用于初始化BeanContextSupport实例的瞬态状态。此类使用此方法实例化用于监视子级上的PropertyChange和VetoableChange事件的内部类侦听器。子类可以包装此方法以添加自己的初始化行为
    • copyChildren

      protected final Object[] copyChildren()
      获取此BeanContext的子级的副本。
      返回:
      当前嵌套子级的副本
    • classEquals

      protected static final boolean classEquals(Class<?> first, Class<?> second)
      检查两个类对象或它们的名称是否相等。
      参数:
      first - 第一个对象
      second - 第二个对象
      返回值:
      如果相等则返回true,否则返回false