模块 java.desktop

类 GlyphView

java.lang.Object
javax.swing.text.View
javax.swing.text.GlyphView
所有已实现的接口:
Cloneable , SwingConstants , TabableView
已知子类:
LabelView

public class GlyphView extends View implements TabableView , Cloneable
GlyphView 是一段样式化的文本块,表示映射到文本模型中的元素上的视图。该视图通常负责以某种方式使用字符级属性显示文本字形。 GlyphPainter 类的实现用于执行实际的渲染和模型/视图转换。这将渲染与模型关联的布局和管理分开。

该视图支持以格式化为目的的中断。 breaking 产生的片段共享对元素有主要责任的视图(即它们是内部类并且只携带少量自己的状态)因此它们可以共享其资源。

由于此视图表示可能嵌入了选项卡的文本,因此它实现了 TabableView 接口。仅当此视图嵌入到进行选项卡扩展的容器中时,选项卡才会扩展。 ParagraphView 是进行选项卡扩展的容器示例。

自从:
1.3
  • 构造方法详细信息

    • GlyphView

      public GlyphView(Element  elem)
      构造一个包裹在元素上的新视图。
      参数:
      elem - 元素
  • 方法详情

    • clone

      protected final Object  clone()
      创建一个浅拷贝。这由 createFragment 和 breakView 方法使用。
      重写:
      clone 在类 Object
      返回:
      副本
      参见:
    • getGlyphPainter

      public GlyphView.GlyphPainter  getGlyphPainter()
      获取当前安装的字形绘制器。如果尚未安装绘制器,并且还不需要默认值,则返回 null。
      返回:
      当前安装的字形绘制器
    • setGlyphPainter

      public void setGlyphPainter(GlyphView.GlyphPainter  p)
      设置用于渲染字形的绘制器。
      参数:
      p - 用于渲染字形的绘制器
    • getText

      public Segment  getText(int p0, int p1)
      获取对占据给定范围的文本的引用。这通常由 GlyphPainter 用来确定它应该为哪些字符呈现字形。
      参数:
      p0 - 起始文档偏移量 >= 0
      p1 - 结束文档偏移量 >= p0
      返回:
      包含文本的 Segment
    • getBackground

      public Color  getBackground()
      获取背景颜色以用于呈现字形。如果没有背景颜色,则应返回 null。如果关联文档是带样式的文档,则执行此调用以调用 StyledDocument.getBackground,否则返回 null。
      返回:
      用于呈现字形的背景颜色
    • getForeground

      public Color  getForeground()
      获取前景色以用于呈现字形。如果没有前景色,则应返回 null。如果关联的文档是 StyledDocument,则执行此调用以调用 StyledDocument.getBackground。如果关联文档不是 StyledDocument,则使用关联组件的前景色。如果没有关联的组件,则返回 null。
      返回:
      用于呈现字形的前景色
    • getFont

      public Font  getFont()
      获取字形应基于的字体。如果关联的文档是 StyledDocument,则执行此调用以调用 StyledDocument.getFont。如果关联文档不是 StyledDocument,则使用关联组件字体。如果没有关联的组件,则返回 null。
      返回:
      字形应基于的字体
    • isUnderline

      public boolean isUnderline()
      确定字形是否应加下划线。如果为真,则应通过基线绘制下划线。
      返回:
      如果字形应该加下划线
    • isStrikeThrough

      public boolean isStrikeThrough()
      确定字形是否应该有删除线。如果为真,则应通过字形的中心绘制一条线。
      返回:
      如果字形应该有删除线
    • isSubscript

      public boolean isSubscript()
      确定字形是否应呈现为上标。
      返回:
      字形是否应呈现为上标
    • isSuperscript

      public boolean isSuperscript()
      确定字形是否应呈现为下标。
      返回:
      字形是否应呈现为下标
    • getTabExpander

      public TabExpander  getTabExpander()
      如果此视图中存在选项卡,则获取要使用的 TabExpander。
      返回:
      如果此视图中存在选项卡,则使用 TabExpander
    • checkPainter

      protected void checkPainter()
      检查是否存在字形绘制器。如果绘制器不存在,将安装默认的字形绘制器。
    • getTabbedSpan

      public float getTabbedSpan(float x, TabExpander  e)
      使用给定的选项卡扩展实现时确定所需的跨度。
      指定者:
      getTabbedSpan 在接口 TabableView
      参数:
      x - 为了选项卡扩展 >= 0,视图所在的位置。
      e - 遇到时如何展开选项卡。
      返回:
      所需的跨度 >= 0
      参见:
    • getPartialSpan

      public float getPartialSpan(int p0, int p1)
      确定与部分视图的选项卡扩展沿同一轴的跨度。这旨在供 TabExpander 用于制表符扩展涉及将没有空格的文本部分相对于制表位对齐的情况。因此假设给定的范围不包含制表符。

      可以在服务 getTabbedSpan 或 getPreferredSize 时调用此方法。它必须安排自己的文本缓冲区来进行测量。

      指定者:
      getPartialSpan 在接口 TabableView
      参数:
      p0 - 起始文档偏移量 >= 0
      p1 - 结束文档偏移量 >= p0
      返回:
      跨度 >= 0
    • getStartOffset

      public int getStartOffset()
      获取此视图负责的模型部分。
      重写:
      getStartOffset 在类 View
      返回:
      模型的起始偏移量
      参见:
    • getEndOffset

      public int getEndOffset()
      获取此视图负责的模型部分。
      重写:
      getEndOffset 在类 View
      返回:
      模型的结束偏移量
      参见:
    • paint

      public void paint(Graphics  g, Shape  a)
      呈现文本样式运行的一部分。
      指定者:
      paint 在类 View
      参数:
      g - 要使用的渲染表面
      a - 要渲染到的分配区域
    • getMinimumSpan

      public float getMinimumSpan(int axis)
      确定此视图沿轴的最小跨度。

      此实现返回视图中最长的不可破坏区域作为 View.X_AXIS 的最小跨度。

      重写:
      getMinimumSpan 在类 View
      参数:
      axis - 可能是 View.X_AXISView.Y_AXIS
      返回:
      视图可以渲染到的最小跨度
      抛出:
      IllegalArgumentException - 如果 axis 参数无效
      参见:
    • getPreferredSpan

      public float getPreferredSpan(int axis)
      确定此视图沿轴的首选跨度。
      指定者:
      getPreferredSpan 在类 View
      参数:
      axis - 可以是 View.X_AXIS 或 View.Y_AXIS
      返回:
      视图要渲染到 >= 0 的跨度。通常,视图被告知要渲染到返回的跨度中,尽管不能保证。父级可以选择调整大小或打破视图。
    • getAlignment

      public float getAlignment(int axis)
      确定此视图沿轴的所需对齐方式。对于标签,对齐是沿着 y 轴的字体基线,以及沿着 x 轴的超类对齐。
      重写:
      getAlignment 在类 View
      参数:
      axis - 可以是 View.X_AXIS 或 View.Y_AXIS
      返回:
      所需的对齐方式。这应该是一个介于 0.0 和 1.0 之间的值,其中 0 表示对齐原点,1.0 表示对齐远离原点的整个跨度。 0.5 的对齐将是视图的中心。
    • modelToView

      public Shape  modelToView(int pos, Shape  a, Position.Bias  b) throws BadLocationException
      提供从文档模型坐标空间到映射到它的视图的坐标空间的映射。
      指定者:
      modelToView 在类 View
      参数:
      pos - 要转换的位置 >= 0
      a - 要渲染到的分配区域
      b - Position.Bias.ForwardPosition.Bias.Backward
      返回:
      给定位置的边界框
      抛出:
      BadLocationException - 如果给定位置不代表相关文档中的有效位置
      参见:
    • viewToModel

      public int viewToModel(float x, float y, Shape  a, Position.Bias [] biasReturn)
      提供从视图坐标空间到模型的逻辑坐标空间的映射。
      指定者:
      viewToModel 在类 View
      参数:
      x - X 坐标 >= 0
      y - Y 坐标 >= 0
      a - 要渲染到的分配区域
      biasReturn - Position.Bias.ForwardPosition.Bias.Backward 作为该数组的第零个元素返回
      返回:
      模型中最能代表给定观点的位置 >= 0
      参见:
    • getBreakWeight

      public int getBreakWeight(int axis, float pos, float len)
      确定此视图中休息机会的吸引力。这可用于确定在格式化过程中哪个视图最有吸引力调用breakView。权重越高,突破越有吸引力。不应将等于或小于 View.BadBreakWeight 的值视为中断。大于或等于 View.ForcedBreakWeight 的值应该被打破。

      这是为了转发到 Y_AXIS 的超类而实现的。沿着 X_AXIS,可能会返回以下值。

      View.ExcellentBreakWeight
      如果在所需的中断位置之前有空格。
      View.BadBreakWeight
      如果所需的中断位置导致起始偏移量的中断位置。
      View.GoodBreakWeight
      如果没有出现其他情况。
      如果可以找到,这通常会导致在空白位置中断的行为,否则会在字符之间中断。
      重写:
      getBreakWeight 在类 View
      参数:
      axis - 可以是 View.X_AXIS 或 View.Y_AXIS
      pos - 断开视图开始的潜在位置 >= 0。这可能对计算制表符位置很有用。
      len - 指定从 pos 开始的相对长度,其中需要潜在中断 >= 0。
      返回:
      权重,应该是介于 View.ForcedBreakWeight 和 View.BadBreakWeight 之间的值。
      参见:
    • breakView

      public View  breakView(int axis, int p0, float pos, float len)
      在给定长度的给定轴上打破此视图。这是为了尝试在空白位置中断,并返回一个末尾有空白的片段。如果找不到空白位置,则使用最近的字符。
      重写:
      breakView 在类 View
      参数:
      axis - 可以是 View.X_AXIS 或 View.Y_AXIS
      p0 - 模型中片段应该开始的位置它的表示 >= 0。
      pos - 断开视图将占据的轴位置 >= 0。这可能对选项卡计算等有用。
      len - 指定沿轴的距离,其中需要潜在中断 >= 0。
      返回:
      表示给定跨度的视图片段(如果视图可以断开)。如果视图不支持中断行为,则返回视图本身。
      参见:
    • createFragment

      public View  createFragment(int p0, int p1)
      创建表示元素一部分的视图。这在对视图片段进行测量的格式化操作期间可能很有用。如果视图不支持分段(默认),它应该返回自己。

      此视图确实支持分段。它被实现为返回一个内部类,该类在此视图中共享状态,仅表示视图的一部分。

      重写:
      createFragment 在类 View
      参数:
      p0 - 起始偏移量 >= 0。这应该是一个大于或等于元素起始偏移量且小于元素结束偏移量的值。
      p1 - 结束偏移量 > p0。这应该是一个小于或等于元素结束偏移量并大于元素开始偏移量的值。
      返回:
      视图片段,如果视图不支持分成片段,则它本身
      参见:
    • getNextVisualPositionFrom

      public int getNextVisualPositionFrom(int pos, Position.Bias  b, Shape  a, int direction, Position.Bias [] biasRet) throws BadLocationException
      提供一种方法来确定下一个可能放置插入符号的可视化模型位置。某些视图可能不可见,它们可能与模型中的顺序不同,或者它们可能不允许访问模型中的某些位置。该方法可以指定一个位置在 >=0 的范围内进行转换。如果值为-1,将自动计算位置。如果值 < -1,将抛出 BadLocationException
      重写:
      getNextVisualPositionFrom 在类 View
      参数:
      pos - 要转换的位置
      b - 偏差
      a - 要渲染到的分配区域
      direction - 从当前位置开始的方向,可以被认为是通常在键盘上找到的箭头键。这可能是 SwingConstants.WEST、SwingConstants.EAST、SwingConstants.NORTH 或 SwingConstants.SOUTH。
      biasRet - 返回的偏差
      返回:
      模型中最能代表下一个位置视觉位置的位置。
      抛出:
      BadLocationException - 给定位置不是文档中的有效位置
      IllegalArgumentException - 无效方向
    • insertUpdate

      public void insertUpdate(DocumentEvent  e, Shape  a, ViewFactory  f)
      通知某些内容已插入文档中此视图负责的位置。这是为了沿字形呈现的轴调用 preferenceChanged 来实现的。
      重写:
      insertUpdate 在类 View
      参数:
      e - 来自关联文档的更改信息
      a - 视图的当前分配
      f - 如果视图有子视图,用于重建的工厂
      参见:
    • removeUpdate

      public void removeUpdate(DocumentEvent  e, Shape  a, ViewFactory  f)
      通知此视图负责的位置从文档中删除了某些内容。这是为了沿字形呈现的轴调用 preferenceChanged 来实现的。
      重写:
      removeUpdate 在类 View
      参数:
      e - 来自关联文档的更改信息
      a - 视图的当前分配
      f - 如果视图有子视图,用于重建的工厂
      参见:
    • changedUpdate

      public void changedUpdate(DocumentEvent  e, Shape  a, ViewFactory  f)
      从文档发出通知,通知该视图负责的位置的属性已更改。这是为了沿水平轴和垂直轴调用 preferenceChanged 而实现的。
      重写:
      changedUpdate 在类 View
      参数:
      e - 来自关联文档的更改信息
      a - 视图的当前分配
      f - 如果视图有子视图,用于重建的工厂
      参见: