Module java.desktop
Package javax.swing.text

Class 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类的实现用于执行实际的渲染和模型/视图转换。这将渲染与布局和与模型关联的管理分离开来。

该视图支持为格式化而断开。通过断开产生的片段共享具有元素主要责任的视图(即它们是嵌套类并且只携带少量自己的状态),因此它们可以共享其资源。

由于此视图表示可能嵌入制表符的文本,因此它实现了TabableView接口。只有在此视图嵌入支持制表符扩展的容器中时,制表符才会被展开。ParagraphView是支持制表符扩展的容器的一个示例。

自从:
1.3
  • Constructor Details

    • GlyphView

      public GlyphView(Element elem)
      在元素上包装一个新视图。
      参数:
      elem - 元素
  • Method Details

    • 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()
      确定字形是否应该带有下划线。如果为true,则应通过基线绘制下划线。
      返回:
      字形是否应该带有下划线
    • isStrikeThrough

      public boolean isStrikeThrough()
      确定字形是否应具有删除线。如果为true,则应通过字形中心绘制一条线。
      返回:
      字形是否应具有删除线
    • 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 - 如果视图有子项,则用于重建的工厂
      参见: