Module java.desktop
Package javax.swing.text

Class ParagraphView

所有已实现的接口:
SwingConstants, TabExpander
直接已知的子类:
ParagraphView

public class ParagraphView extends FlowView implements TabExpander
支持多种字体、颜色、组件、图标等的简单换行段落视图。基本上是一个带有周围边距的垂直框。框的内容是一堆行,这些行是特殊的水平框。此视图创建一组表示段落元素的子元素的视图。如果每个视图都适合,则将这些视图直接放入行中,否则将调用breakView方法尝试将视图划分为适合的片段。
参见:
  • Field Details

    • firstLineIndent

      protected int firstLineIndent
      第一行的缩进,从左边开始。
  • Constructor Details

    • ParagraphView

      public ParagraphView(Element elem)
      为给定元素构造一个ParagraphView
      参数:
      elem - 此视图负责的元素
  • Method Details

    • setJustification

      protected void setJustification(int j)
      设置对齐方式的类型。
      参数:
      j - 以下值之一:
      • StyleConstants.ALIGN_LEFT
      • StyleConstants.ALIGN_CENTER
      • StyleConstants.ALIGN_RIGHT
    • setLineSpacing

      protected void setLineSpacing(float ls)
      设置行间距。
      参数:
      ls - 该值是行高的因子
    • setFirstLineIndent

      protected void setFirstLineIndent(float fi)
      设置第一行的缩进。
      参数:
      fi - 点数值
    • setPropertiesFromAttributes

      protected void setPropertiesFromAttributes()
      从属性设置缓存的属性。
    • getLayoutViewCount

      protected int getLayoutViewCount()
      返回此视图负责的视图数量。段落的子视图是用于排列代表子元素的View片段的行。这是在二维中平铺的视图数量,并且应该等同于此视图负责的元素的子元素数量。
      返回:
      ParagraphView负责的视图数量
    • getLayoutView

      protected View getLayoutView(int index)
      返回给定index的视图。段落的子视图是用于排列代表子元素的Views片段的行。此方法返回负责子元素索引(在分割之前)的视图。这些是从工厂生成的视图(用于代表子元素)并用于布局的视图。
      参数:
      index - 所需视图的index
      返回:
      index处的视图
    • getNextNorthSouthVisualPositionFrom

      protected int getNextNorthSouthVisualPositionFrom(int pos, Position.Bias b, Shape a, int direction, Position.Bias[] biasRet) throws BadLocationException
      返回光标的下一个视觉位置,向东或向西方向。从CompositeView中重写。
      覆盖:
      CompositeView 中的getNextNorthSouthVisualPositionFrom
      参数:
      pos - 模型中的位置
      b - Position.Bias.ForwardPosition.Bias.Backward
      a - 要渲染的分配区域
      direction - SwingConstants.NORTHSwingConstants.SOUTH
      biasRet - 包含在此方法中检查的偏差的数组
      返回:
      表示下一个位置视觉位置的模型中的位置
      抛出:
      BadLocationException - 对于文档模型中的错误位置
      参见:
    • getClosestPositionTo

      protected int getClosestPositionTo(int pos, Position.Bias b, Shape a, int direction, Position.Bias[] biasRet, int rowIndex, int x) throws BadLocationException
      返回最接近x的模型位置。rowIndex给出应查找的对应视图的索引。
      参数:
      pos - 模型中的位置
      b - 偏差
      a - 要渲染的分配区域
      direction - 以下值之一:
      • SwingConstants.NORTH
      • SwingConstants.SOUTH
      biasRet - 包含在此方法中检查的偏差的数组
      rowIndex - 视图的索引
      x - 感兴趣的x坐标
      返回:
      最接近x的模型位置
      抛出:
      BadLocationException - 如果遇到错误位置
    • flipEastAndWestAtEnds

      protected boolean flipEastAndWestAtEnds(int position, Position.Bias bias)
      确定下一个视图的放置方向。考虑索引n处的View。通常,View是从左到右布局的,因此东侧的View将位于索引n + 1,西侧的View将位于索引n - 1。在某些情况下,例如具有双向文本的情况,可能东侧的View不在索引n + 1处,而是在索引n - 1处,或者西侧的View不在索引n - 1处,而在索引n + 1处。在这种情况下,此方法将返回true,表示View按降序布局。

      如果文本在位置上从右到左布局,则返回true,否则返回false。

      覆盖:
      BoxView 中的flipEastAndWestAtEnds
      参数:
      position - 模型中的位置
      bias - Position.Bias.ForwardPosition.Bias.Backward
      返回:
      如果文本在位置上从右到左布局,则返回true,否则返回false。
    • getFlowSpan

      public int getFlowSpan(int index)
      获取给定子索引的用于流动的约束跨度。
      覆盖:
      FlowView 中的getFlowSpan
      参数:
      index - 正在查询的视图的索引
      返回:
      给定index处视图的约束跨度
      自1.3起:
      1.3
      参见:
    • getFlowStart

      public int getFlowStart(int index)
      获取流动跨度将开始的沿流动轴的位置。
      覆盖:
      FlowView 中的getFlowStart
      参数:
      index - 正在查询的视图的索引
      返回:
      给定index处视图的位置
      自1.3起:
      1.3
      参见:
    • createRow

      protected View createRow()
      创建一个应用于在流中保存一行子元素的View
      指定者:
      FlowView.createRow 中的createRow
      返回:
      新的View
      自1.3起:
      1.3
    • nextTabStop

      public float nextTabStop(float x, int tabOffset)
      返回给定参考位置的下一个制表位位置。此视图实现了制表坐标系统,并在布局过程中调用逻辑子项上的getTabbedSpan以确定子项的所需跨度。逻辑子项可以将它们的制表展开向上委托给了知道如何展开制表位的段落。LabelView是一个将其制表展开需求向上委托给段落的视图的示例。

      此方法实现为尝试定位段落元素的属性集中的TabSet。如果找到一个,将使用其设置,否则将提供默认的展开。制表展开的基本位置是段落最近分配的左插入位置(这是子项布局所基于的)。

      指定者:
      nextTabStop 在接口 TabExpander
      参数:
      x - X 参考位置
      tabOffset - 制表位出现的文本流中的位置 >= 0
      返回:
      制表展开的尾部 >= 0
      另请参阅:
    • getTabSet

      protected TabSet getTabSet()
      获取用于计算制表位的Tabset
      返回:
      TabSet
    • getPartialSize

      protected float getPartialSize(int startOffset, int endOffset)
      返回startOffsetendOffset之间的视图使用的大小。如果子视图实现了TabableView接口,则使用getPartialView来计算大小。如果需要大小并且View没有实现TabableView接口,则将使用preferredSpan
      参数:
      startOffset - 起始文档偏移量 >= 0
      endOffset - 结束文档偏移量 >= startOffset
      返回:
      大小 >= 0
    • findOffsetToCharactersInString

      protected int findOffsetToCharactersInString(char[] string, int start)
      在文档中查找具有string中字符的下一个字符,从偏移量start开始。如果找不到字符,则返回-1。
      参数:
      string - 字符串的字符
      start - 在模型中开始的位置 >= 0
      返回:
      文档偏移量,如果找不到字符则为-1
    • getTabBase

      protected float getTabBase()
      返回制表位计算的位置。
      返回:
      制表位计算的位置
    • paint

      public void paint(Graphics g, Shape a)
      使用给定的渲染表面和该表面上的区域进行渲染。在将基本坐标存储为制表计算后,实现将委托给超类。
      覆盖:
      paint 在类 BoxView
      参数:
      g - 要使用的渲染表面
      a - 要渲染到的分配区域
      另请参阅:
    • getAlignment

      public float getAlignment(int axis)
      确定此视图沿轴线的所需对齐方式。实现为将对齐方式给予y轴上第一行的中心,并在x轴上给予默认值。
      覆盖:
      getAlignment 在类 BoxView
      参数:
      axis - 可能是View.X_AXISView.Y_AXIS
      返回:
      所需的对齐方式。这应该是一个介于0.0和1.0之间的值,其中0表示在原点对齐,1.0表示远离原点的完整跨度对齐。对齐值为0.5将是视图的中心。
    • breakView

      public View breakView(int axis, float len, Shape a)
      在给定长度和轴线上的位置上断开此视图。

      ParagraphView实例仅沿Y_AXIS可断开,仅当len在第一行之后时。

      参数:
      axis - 可能是View.X_AXISView.Y_AXIS
      len - 指定沿给定轴线所需断开的位置 >= 0
      a - 视图的当前分配
      返回:
      表示给定跨度的视图片段,如果视图可以被断开;如果视图不支持断开行为,则返回视图本身
      另请参阅:
    • getBreakWeight

      public int getBreakWeight(int axis, float len)
      获取给定位置的断开权重。

      ParagraphView实例仅沿Y_AXIS可断开,仅当len在第一行之后时。如果长度小于一行,则返回BadBreakWeight值。

      参数:
      axis - 可能是View.X_AXISView.Y_AXIS
      len - 指定所需断开的位置 >= 0
      返回:
      表示此处断开吸引力的值;要么是GoodBreakWeight,要么是BadBreakWeight
      另请参阅:
    • calculateMinorAxisRequirements

      protected SizeRequirements calculateMinorAxisRequirements(int axis, SizeRequirements r)
      计算沿次轴线的段落需求。

      这使用了超类的大小要求,修改以考虑相邻视图边缘的不可断开区域。此类视图的最小大小要求应不小于所有相邻片段的总和。

      如果axis参数既不是View.X_AXIS也不是View.Y_AXIS,则抛出IllegalArgumentException。如果r参数为null,则创建一个新的SizeRequirements对象,否则返回提供的SizeRequirements对象。

      覆盖:
      calculateMinorAxisRequirements 在类 FlowView
      参数:
      axis - 次轴线
      r - 输入的SizeRequirements对象
      返回:
      新的或调整后的SizeRequirements对象
      抛出:
      IllegalArgumentException - 如果axis参数无效
      另请参阅:
    • changedUpdate

      public void changedUpdate(DocumentEvent changes, Shape a, ViewFactory f)
      从文档中获取属性在此视图负责的位置发生更改的通知。
      覆盖:
      changedUpdate 在类 FlowView
      参数:
      changes - 关联文档的更改信息
      a - 视图的当前分配
      f - 如果视图有子项,则用于重建的工厂
      另请参阅: