Module  java.desktop
软件包  javax.swing.text

Class GapContent

  • All Implemented Interfaces:
    Serializable AbstractDocument.Content


    public class GapContent
    extends Object
    implements AbstractDocument.Content, Serializable
    AbstractDocument.Content接口的实现使用与emacs使用的类似的间隙缓冲区来实现。 新新新200新新新200新新新200新新200 200 200 200新新新200新200新新200新200新新200新200新新200新200新新200新新新200新新200新新200新新200新新200新新200新新200新新200新新200新新200新新新200新新新 差距被移动到更改的位置,以利用大多数更改位于相同位置的常见行为。 在间隙边界发生的变化通常是便宜的,并且移动间隙通常比直接移动阵列内容以适应变化更便宜。

    跟踪变化的位置通常也很便宜。 位置实现(标记)存储数组索引,并且可以容易地从当前间隙位置计算顺序位置。 当间隙移动时,更改仅需要更新旧间隙和新间隙边界之间的标记,因此通常更新标记相当便宜。 标记被存储排序,以便它们可以通过二进制搜索快速定位。 新新200新新200新新200新新200新新200新200新新200新200新新200新200新新200新200新新200新200新新200新200新新200新200新200新200新新200新新200新新200新新200新200新新200新200新新200新新200新新200新

    另请参见:
    Serialized Form
    • 构造方法摘要

      构造方法  
      Constructor 描述
      GapContent​()
      创建一个新的GapContent对象。
      GapContent​(int initialLength)
      创建一个新的GapContent对象,指定初始大小。
    • 构造方法详细信息

      • GapContent

        public GapContent​()
        创建一个新的GapContent对象。 初始大小默认为10。
      • GapContent

        public GapContent​(int initialLength)
        创建一个新的GapContent对象,指定初始大小。 初始尺寸不允许低于2,为隐含的休息和差距腾出空间。
        参数
        initialLength - 初始大小
    • 方法详细信息

      • allocateArray

        protected Object allocateArray​(int len)
        分配一个数组以存储适当类型的项目(由子类确定)。
      • getArrayLength

        protected int getArrayLength​()
        获取分配的数组的长度。
      • shiftEnd

        protected void shiftEnd​(int newSize)
        使差距更大,移动任何必要的数据并更新适当的标记
      • shiftGap

        protected void shiftGap​(int newGapStart)
        将差距的开始移动到新位置,而不改变间隙的大小。 这将移动数组中的数据并相应地更新标记。
      • resetMarksAtZero

        protected void resetMarksAtZero​()
        将偏移量为0的所有标记重置为索引为零。
      • shiftGapStartDown

        protected void shiftGapStartDown​(int newGapStart)
        将间隙端向下调整。 这不会移动任何数据,但它会更新任何受边界变化影响的标记。 从旧距离开始的所有痕迹开始到新的缝隙开始被挤压到间隙的最后(它们的位置已经被去除)。
      • shiftGapEndUp

        protected void shiftGapEndUp​(int newGapEnd)
        将间隙向上调整。 这不会移动任何数据,但它会更新任何受边界变化影响的标记。 所有从旧缝隙到新的缝隙的痕迹都被挤压到了缝隙的末端(它们的位置已被去除)。
      • getPositionsInRange

        protected Vector getPositionsInRange​(Vector v,
                                             int offset,
                                             int length)
        返回一个Vector包含UndoPosRef的实例,其范围为offsetoffset + length 如果v不为空,则匹配的位置放在那里。 返回带有结果位置的向量。
        参数
        v - 要使用的矢量,在null上创建一个新的
        offset - 起始偏移量> = 0
        length - 长度> = 0
        结果
        一组实例
      • updateUndoPositions

        protected void updateUndoPositions​(Vector positions,
                                           int offset,
                                           int length)
        重置positions所有UndoPosRef实例的positions

        这是为了内部使用,通常不是子类的兴趣。

        参数
        positions - 要重置的UndoPosRef实例
        offset - 其中插入了字符串
        length - 插入字符串的长度
      • getArray

        protected final Object getArray​()
        访问数组。 数组的实际类型只能由子类知道。
      • getGapStart

        protected final int getGapStart​()
        获得开始的差距。
      • getGapEnd

        protected final int getGapEnd​()
        获得最后的差距。
      • replace

        protected void replace​(int position,
                               int rmSize,
                               Object addItems,
                               int addSize)
        用给定的新项替换存储中给定的逻辑位置。 如果间隙目前不在更改位置,这将会将差距移动到正在更改的区域。
        参数
        position - 进行更换的位置。 这不是底层存储阵列中的位置,而是连续空间中的位置被建模。
        rmSize - 要删除的项目数
        addItems - 要存放的新物品。