Module java.desktop
Package javax.swing.text

Class StyleContext

java.lang.Object
javax.swing.text.StyleContext
所有已实现的接口:
Serializable, AbstractDocument.AttributeContext
直接已知的子类:
StyleSheet

public class StyleContext extends Object implements Serializable, AbstractDocument.AttributeContext
一组样式及其相关资源的池。此类通过成为一个容器来确定一组资源的生命周期,该容器保存各种资源的缓存,例如字体和颜色,这些资源被各种样式定义重复使用。如果需要,多个文档可以共享此类,以最大化相关资源的共享。

此类还为少量属性提供了高效的支持,并通过共享属性并利用其不可变性来压缩属性。由于许多样式是复制的,因此共享的潜力很大,副本可能非常便宜。较大的属性集会降低共享的可能性,因此会自动回退到不太节省空间的实现。

警告: 此类的序列化对象将不兼容未来的Swing版本。当前的序列化支持适用于短期存储或在运行相同Swing版本的应用程序之间进行RMI。从1.4开始,已将对所有JavaBeans的长期存储支持添加到java.beans包中。请参见XMLEncoder

  • Field Details

    • DEFAULT_STYLE

      public static final String DEFAULT_STYLE
      附加到段落的默认逻辑样式的名称。
      参见:
  • Constructor Details

    • StyleContext

      public StyleContext()
      创建一个新的StyleContext对象。
  • Method Details

    • getDefaultStyleContext

      public static final StyleContext getDefaultStyleContext()
      返回所有文档共享的默认AttributeContext,这些文档不需要定义/提供自己的上下文。
      返回:
      上下文
    • addStyle

      public Style addStyle(String nm, Style parent)
      将新样式添加到样式层次结构中。样式属性从下到上解析,因此在子级别指定的属性将覆盖父级别指定的属性。
      参数:
      nm - 样式的名称(必须在文档中的命名样式集合中是唯一的)。如果样式未命名,则名称可以为null,但调用者负责管理返回的未命名样式的引用,因为无法通过名称获取未命名样式。未命名样式可能对于诸如样式运行中发现的字符属性覆盖之类的事情很有用。
      parent - 父样式。如果未指定属性,则此值可以为null,因为某些其他样式中不需要解析未指定的属性。
      返回:
      创建的样式
    • removeStyle

      public void removeStyle(String nm)
      删除先前添加到文档中的命名样式。
      参数:
      nm - 要删除的样式的名称
    • getStyle

      public Style getStyle(String nm)
      获取先前添加到文档中的命名样式。
      参数:
      nm - 样式的名称
      返回:
      样式
    • getStyleNames

      public Enumeration<?> getStyleNames()
      获取已定义样式的名称。
      返回:
      名称列表作为枚举
    • addChangeListener

      public void addChangeListener(ChangeListener l)
      添加侦听器以跟踪添加或删除样式时的情况。
      参数:
      l - 更改侦听器
    • removeChangeListener

      public void removeChangeListener(ChangeListener l)
      删除跟踪添加或删除样式的侦听器。
      参数:
      l - 更改侦听器
    • getChangeListeners

      public ChangeListener[] getChangeListeners()
      返回添加到此StyleContext中的所有ChangeListener的数组。
      返回:
      所有已添加的ChangeListener或如果未添加任何侦听器,则返回空数组
      自1.4起:
      1.4
    • getFont

      public Font getFont(AttributeSet attr)
      从属性集中获取字体。此方法实现为尝试获取给定AttributeSet的缓存字体,如果失败,则解析字体特性并从低级别字体缓存中获取字体。
      参数:
      attr - 属性集
      返回:
      字体
    • getForeground

      public Color getForeground(AttributeSet attr)
      获取一组属性并将其转换为前景色规范。这可能用于指定更亮、更饱和等内容。默认情况下,它只返回由StyleConstants.Foreground属性指定的值。
      参数:
      attr - 属性集
      返回:
      颜色
    • getBackground

      public Color getBackground(AttributeSet attr)
      获取一组属性并将其转换为背景颜色规范。这可能用于指定更亮、更饱和等内容。默认情况下,它只返回由StyleConstants.Background属性指定的值。
      参数:
      attr - 属性集
      返回:
      颜色
    • getFont

      public Font getFont(String family, int style, int size)
      获取一个新的字体。如果存在缓存的字体,则从缓存中返回字体。如果没有,则将字体添加到缓存中。这基本上是1.1字体特性的低级缓存。
      参数:
      family - 字体系列(例如"Monospaced")
      style - 字体的样式(例如Font.PLAIN)
      size - 点大小 >= 1
      返回:
      新字体
    • getFontMetrics

      public FontMetrics getFontMetrics(Font f)
      返回字体的字体度量。
      参数:
      f - 字体
      返回:
      字体度量
    • addAttribute

      public AttributeSet addAttribute(AttributeSet old, Object name, Object value)
      向给定集合添加属性,并返回新的代表性集合。

      此方法是线程安全的,尽管大多数Swing方法不是。有关更多信息,请参见Swing中的并发

      在接口中指定:
      addAttribute 在接口 AbstractDocument.AttributeContext
      参数:
      old - 旧属性集
      name - 非null属性名称
      value - 属性值
      返回:
      更新后的属性集
      参见:
    • addAttributes

      public AttributeSet addAttributes(AttributeSet old, AttributeSet attr)
      向元素添加一组属性。

      此方法是线程安全的,尽管大多数Swing方法不是。有关更多信息,请参见Swing中的并发

      指定者:
      addAttributes 在接口 AbstractDocument.AttributeContext
      参数:
      old - 旧属性集
      attr - 要添加的属性
      返回值:
      更新后的属性集
      参见:
    • removeAttribute

      public AttributeSet removeAttribute(AttributeSet old, Object name)
      从集合中移除一个属性。

      该方法是线程安全的,尽管大多数Swing方法不是。更多信息请参阅Swing中的并发性

      指定者:
      removeAttribute 在接口 AbstractDocument.AttributeContext
      参数:
      old - 旧属性集
      name - 非空属性名称
      返回值:
      更新后的属性集
      参见:
    • removeAttributes

      public AttributeSet removeAttributes(AttributeSet old, Enumeration<?> names)
      为元素移除一组属性。

      该方法是线程安全的,尽管大多数Swing方法不是。更多信息请参阅Swing中的并发性

      指定者:
      removeAttributes 在接口 AbstractDocument.AttributeContext
      参数:
      old - 旧属性集
      names - 属性名称
      返回值:
      更新后的属性集
      参见:
    • removeAttributes

      public AttributeSet removeAttributes(AttributeSet old, AttributeSet attrs)
      为元素移除一组属性。

      该方法是线程安全的,尽管大多数Swing方法不是。更多信息请参阅Swing中的并发性

      指定者:
      removeAttributes 在接口 AbstractDocument.AttributeContext
      参数:
      old - 旧属性集
      attrs - 属性
      返回值:
      更新后的属性集
      参见:
    • getEmptySet

      public AttributeSet getEmptySet()
      获取一个空的属性集。
      指定者:
      getEmptySet 在接口 AbstractDocument.AttributeContext
      返回值:
      属性集
    • reclaim

      public void reclaim(AttributeSet a)
      返回MutableAttributeSet实现不再需要的属性集。这对于在1.1版本下运行操作很有用,因为那里没有弱引用。这通常会被MutableAttributeSet实现的finalize方法调用。

      该方法是线程安全的,尽管大多数Swing方法不是。更多信息请参阅Swing中的并发性

      指定者:
      reclaim 在接口 AbstractDocument.AttributeContext
      参数:
      a - 要回收的属性集
    • getCompressionThreshold

      protected int getCompressionThreshold()
      返回尝试压缩为唯一/不可变集合的键/值对的最大数量。超过此限制的集合将使用哈希表,并且将是一个MutableAttributeSet。
      返回值:
      阈值
    • createSmallAttributeSet

      protected StyleContext.SmallAttributeSet createSmallAttributeSet(AttributeSet a)
      创建一个可能被共享的紧凑属性集。这是子类想要改变SmallAttributeSet行为的挂钩。可以重新实现此方法以返回提供某种属性转换的AttributeSet。
      参数:
      a - 要以紧凑形式表示的属性集。
      返回值:
      可能被共享的紧凑属性集
    • createLargeAttributeSet

      protected MutableAttributeSet createLargeAttributeSet(AttributeSet a)
      创建一个应该在空间和时间之间进行权衡的大型属性集。此集合不会被共享。这是子类想要改变较大属性存储格式(默认为SimpleAttributeSet)行为的挂钩。可以重新实现此方法以返回提供某种属性转换的MutableAttributeSet。
      参数:
      a - 要以较大形式表示的属性集。
      返回值:
      应该在空间和时间之间进行权衡的大型属性集
    • toString

      public String toString()
      将StyleContext转换为String。
      覆盖:
      toString 在类 Object
      返回值:
      字符串
    • writeAttributes

      public void writeAttributes(ObjectOutputStream out, AttributeSet a) throws IOException
      写出属性的上下文特定处理
      参数:
      out - 输出流
      a - 属性集
      抛出:
      IOException - 任何I/O错误
    • readAttributes

      public void readAttributes(ObjectInputStream in, MutableAttributeSet a) throws ClassNotFoundException, IOException
      读入属性的上下文特定处理
      参数:
      in - 从中读取属性数据的对象流。
      a - 要放置属性定义的属性集。
      抛出:
      ClassNotFoundException - 如果在读取对象流时遇到
      IOException - 如果在读取对象流时遇到
    • writeAttributeSet

      public static void writeAttributeSet(ObjectOutputStream out, AttributeSet a) throws IOException
      将一组属性写入给定的对象流,以进行序列化。这将特别处理已使用registerStaticAttributeKey方法注册的静态属性键。未注册为静态键的任何属性键将直接序列化。所有值都应该是可序列化的。
      参数:
      out - 输出流
      a - 属性集
      抛出:
      IOException - 任何I/O错误
    • readAttributeSet

      public static void readAttributeSet(ObjectInputStream in, MutableAttributeSet a) throws ClassNotFoundException, IOException
      从先前使用writeAttributeSet写出的对象输入流中读取一组属性。这将尝试将静态对象键恢复为当前虚拟机中的静态对象,只考虑已使用registerStaticAttributeKey方法注册的键。从流中检索的属性将放入给定的可变集合中。
      参数:
      in - 从中读取属性数据的对象流。
      a - 要放置属性定义的属性集。
      抛出:
      ClassNotFoundException - 如果在读取对象流时遇到
      IOException - 如果在读取对象流时遇到
    • registerStaticAttributeKey

      public static void registerStaticAttributeKey(Object key)
      将一个对象注册为在属性集中用作键的静态对象。这允许对键进行特殊处理以进行序列化。

      对于在1.1虚拟机下运行的操作,这使用toString返回的值连接到类名。toString返回的值不应该包含类引用(即应该从Object中的定义重新实现)以便在以后重新计算时保持相同。

      参数:
      key - 非空对象键
    • getStaticAttribute

      public static Object getStaticAttribute(Object key)
      返回先前使用registerStaticAttributeKey注册的对象。
      参数:
      key - 对象键
      返回值:
      返回先前使用registerStaticAttributeKey注册的对象
    • getStaticAttributeKey

      public static Object getStaticAttributeKey(Object key)
      返回key将注册的字符串。
      参数:
      key - 对象键
      返回值:
      key将注册的字符串
      参见: