模块 java.desktop

类 CompositeView

java.lang.Object
javax.swing.text.View
javax.swing.text.CompositeView
所有已实现的接口:
SwingConstants
已知子类:
BoxView

public abstract class CompositeView extends View
CompositeView 是一个抽象的 View 实现,它管理一个或多个子视图。 (请注意,CompositeView 用于管理相对较少数量的子视图。)CompositeView 旨在用作 View 实现的起点,例如 BoxView ,它将包含子 View s。希望管理子 View 集合的子类应该使用 replace(int, int, javax.swing.text.View[]) 方法。由于 ViewDocumentListener 通知期间调用 replace,您通常不需要直接调用 replace

虽然 CompositeView 不对其子 View 施加布局策略,但它确实允许插入它将包含的子 View 。insets可以由 setInsets(short, short, short, short) setParagraphInsets(javax.swing.text.AttributeSet) 设置。

除了 View 的抽象方法之外, CompositeView 的子类还需要覆盖:

  • 构造方法详细信息

    • CompositeView

      public CompositeView(Element  elem)
      为给定元素构造一个 CompositeView
      参数:
      elem - 此视图负责的元素
  • 方法详情

    • loadChildren

      protected void loadChildren(ViewFactory  f)
      加载所有子项以初始化视图。这是由 setParent(javax.swing.text.View) 方法调用的。子类可以重新实现它以不同的方式初始化它们的子视图。默认实现为每个子元素创建一个子视图。
      参数:
      f - 视图工厂
      参见:
    • setParent

      public void setParent(View  parent)
      设置视图的父级。如果此视图还没有子项,则重新实现它以提供超类行为以及调用 loadChildren 方法。不应在构造函数中加载子项,因为设置父项的行为可能会导致他们尝试向上搜索层次结构(例如获取托管 Container)。如果此视图有子视图(视图正在从视图层次结构中的一个位置移动到另一个位置),则不会调用 loadChildren 方法。
      重写:
      setParent 在类 View
      参数:
      parent - 视图的父视图,null 如果没有
    • getViewCount

      public int getViewCount()
      返回此视图的子视图数。
      重写:
      getViewCount 在类 View
      返回:
      观看次数 >= 0
      参见:
    • getView

      public View  getView(int n)
      返回此容器中的第 n 个视图。
      重写:
      getView 在类 View
      参数:
      n - 所需视图的数量,>= 0 && < getViewCount()
      返回:
      索引 n 处的视图
    • replace

      public void replace(int offset, int length, View [] views)
      替换子视图。如果没有要删除的视图,这将充当插入。如果没有要添加的视图,这将作为删除。被删除的视图会将父级设置为 null ,并删除对它们的内部引用,以便它们可以被垃圾收集。
      重写:
      replace 在类 View
      参数:
      offset - 插入新视图的子视图的起始索引; >= 0 且 <= getViewCount
      length - 要删除的现有子视图的数量;这应该是一个值 >= 0 且 <= (getViewCount() - offset)
      views - 要添加的子视图;此值可以是 null 以指示未添加任何子项(对于删除很有用)
    • getChildAllocation

      public Shape  getChildAllocation(int index, Shape  a)
      获取给定子视图的分配以呈现到其中。这使得能够找出各种视图所在的位置。
      重写:
      getChildAllocation 在类 View
      参数:
      index - 孩子的索引,>= 0 && < getViewCount()
      a - 分配给这个视图
      返回:
      分配给子级
    • 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 - 如果给定位置不代表相关文档中的有效位置
      参见:
    • modelToView

      public Shape  modelToView(int p0, Position.Bias  b0, int p1, Position.Bias  b1, Shape  a) throws BadLocationException
      提供从文档模型坐标空间到映射到它的视图的坐标空间的映射。
      重写:
      modelToView 在类 View
      参数:
      p0 - 要转换的位置 >= 0
      b0 - 偏向 p0 表示的前一个字符或下一个字符,以防该位置是两个视图的边界; Position.Bias.ForwardPosition.Bias.Backward
      p1 - 要转换的位置 >= 0
      b1 - 偏向 p1 表示的前一个字符或下一个字符,以防位置是两个视图的边界
      a - 要渲染到的分配区域
      返回:
      返回给定位置的边界框
      抛出:
      BadLocationException - 如果给定位置不代表相关文档中的有效位置
      IllegalArgumentException - 对于无效的偏置参数
      参见:
    • viewToModel

      public int viewToModel(float x, float y, Shape  a, Position.Bias [] bias)
      提供从视图坐标空间到模型的逻辑坐标空间的映射。
      指定者:
      viewToModel 在类 View
      参数:
      x - 要转换的视图位置的 x 坐标 >= 0
      y - 要转换的视图位置的 y 坐标 >= 0
      a - 要渲染到的分配区域
      bias - Position.Bias.ForwardPosition.Bias.Backward
      返回:
      模型中最能代表视图中给定点的位置 >= 0
      参见:
    • getNextVisualPositionFrom

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

      public int getViewIndex(int pos, Position.Bias  b)
      返回表示模型中给定位置的子视图索引。这是为了调用 getViewIndexByPosition 方法实现向后兼容。
      重写:
      getViewIndex 在类 View
      参数:
      pos - 位置 >= 0
      b - 偏差
      返回:
      表示给定位置的视图的索引,如果没有视图表示该位置,则为 -1
      自从:
      1.3
    • isBefore

      protected abstract boolean isBefore(int x, int y, Rectangle  alloc)
      测试点是否位于矩形范围之前。
      参数:
      x - X 坐标 >= 0
      y - Y 坐标 >= 0
      alloc - 矩形
      返回:
      如果该点在指定范围之前,则为真
    • isAfter

      protected abstract boolean isAfter(int x, int y, Rectangle  alloc)
      测试点是否位于矩形范围之后。
      参数:
      x - X 坐标 >= 0
      y - Y 坐标 >= 0
      alloc - 矩形
      返回:
      如果点在指定范围之后则为真
    • getViewAtPoint

      protected abstract View  getViewAtPoint(int x, int y, Rectangle  alloc)
      获取给定坐标处的子视图。
      参数:
      x - X 坐标 >= 0
      y - Y 坐标 >= 0
      alloc - 父母在进入时的分配,应更改为孩子在退出时的分配
      返回:
      子级的看法
    • childAllocation

      protected abstract void childAllocation(int index, Rectangle  a)
      返回给定子项的分配。
      参数:
      index - 孩子的索引,>= 0 && < getViewCount()
      a - 进入时分配到框的内部,以及退出时在索引处分配子视图。
    • getViewAtPosition

      protected View  getViewAtPosition(int pos, Rectangle  a)
      获取表示模型中给定位置的子视图。这是为了在每个子元素都有一个子视图的情况下获取视图。
      参数:
      pos - 位置 >= 0
      a - 进入时分配给框的内部,分配包含退出时位置的视图
      返回:
      表示给定位置的视图,如果没有,则为 null
    • getViewIndexAtPosition

      protected int getViewIndexAtPosition(int pos)
      获取表示模型中给定位置的子视图索引。这是为了在每个子元素都有一个子视图的情况下获取视图。
      参数:
      pos - 位置 >= 0
      返回:
      表示给定位置的视图的索引,如果没有视图表示该位置,则为 -1
    • getInsideAllocation

      protected Rectangle  getInsideAllocation(Shape  a)
      将给予视图的不可变分配转换为表示内部分配的可变分配(即给定分配的边界,删除了顶部、左侧、底部和右侧的insets。预计返回值将进一步突变为表示对子视图的分配。这是为了重用实例变量而实现的,因此它避免创建过多的矩形。通常,调用此方法的结果将提供给 childAllocation 方法。
      参数:
      a - 给视图的分配
      返回:
      在所有边距被移除后代表视图内部的分配;如果给定的分配是 null ,则返回值为 null
    • setParagraphInsets

      protected void setParagraphInsets(AttributeSet  attr)
      从给定属性中指定的段落属性设置insets。
      参数:
      attr - 属性
    • setInsets

      protected void setInsets(short top, short left, short bottom, short right)
      设置视图的insets。
      参数:
      top - 顶部insets >= 0
      left - 左侧insets >= 0
      bottom - 底部insets >= 0
      right - 右insets >= 0
    • getLeftInset

      protected short getLeftInset()
      获取左insets。
      返回:
      insets >= 0
    • getRightInset

      protected short getRightInset()
      获取正确的insets。
      返回:
      insets >= 0
    • getTopInset

      protected short getTopInset()
      获取顶部insets。
      返回:
      insets >= 0
    • getBottomInset

      protected short getBottomInset()
      获取底部insets。
      返回:
      insets >= 0
    • getNextNorthSouthVisualPositionFrom

      protected int getNextNorthSouthVisualPositionFrom(int pos, Position.Bias  b, Shape  a, int direction, Position.Bias [] biasRet) throws BadLocationException
      返回光标的下一个视觉位置,在北或南方向。
      参数:
      pos - 要转换的位置 >= 0
      b - Position.Bias.ForwardPosition.Bias.Backward 的偏置值
      a - 要渲染到的分配区域
      direction - 从当前位置开始的方向,可以被认为是通常在键盘上找到的箭头键;这可能是以下之一:
      • SwingConstants.NORTH
      • SwingConstants.SOUTH
      biasRet - 包含已检查偏差的数组
      返回:
      模型中最能代表下一个北或南位置的位置
      抛出:
      BadLocationException - 文档模型中的错误位置
      IllegalArgumentException - 如果 direction 无效
      参见:
    • getNextEastWestVisualPositionFrom

      protected int getNextEastWestVisualPositionFrom(int pos, Position.Bias  b, Shape  a, int direction, Position.Bias [] biasRet) throws BadLocationException
      返回光标的下一个视觉位置,向东或向西。
      参数:
      pos - 要转换的位置 >= 0
      b - Position.Bias.ForwardPosition.Bias.Backward 的偏置值
      a - 要渲染到的分配区域
      direction - 从当前位置开始的方向,可以被认为是通常在键盘上找到的箭头键;这可能是以下之一:
      • SwingConstants.WEST
      • SwingConstants.EAST
      biasRet - 包含已检查偏差的数组
      返回:
      模型中最能代表下一个西部或东部位置的位置
      抛出:
      BadLocationException - 文档模型中的错误位置
      IllegalArgumentException - 如果 direction 无效
      参见:
    • flipEastAndWestAtEnds

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

      这将无条件返回 false,如果有可能按降序排列 View ,子类应重写此方法。

      参数:
      position - 在模型中的位置
      bias - Position.Bias.ForwardPosition.Bias.Backward
      返回:
      false