模块  java.desktop
软件包  javax.swing.text

Class GlyphView

  • 实现的所有接口
    CloneableSwingConstantsTabableView
    已知直接子类:
    LabelView

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

    视图支持打破以进行格式化。 破坏产生的碎片共享对元素负有主要责任的视图(即它们是嵌套类,只携带自己的少量状态),因此它们可以共享其资源。

    由于此视图表示可能在其中嵌入选项卡的文本,因此它实现了TabableView接口。 只有在将此视图嵌入到执行制表符扩展的容器中时,才会展开选项卡。 ParagraphView是一个用于执行选项卡扩展的容器的示例。

    从以下版本开始:
    1.3
    • 构造方法详细信息

      • GlyphView

        public GlyphView​(Element elem)
        构造一个包含在元素上的新视图。
        参数
        elem - 元素
    • 方法详细信息

      • clone

        protected final Object clone()
        创建浅表副本。 这由createFragment和breakView方法使用。
        重写:
        clone在类 Object
        结果
        副本
        另请参见:
        Cloneable
      • 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()
        检查是否存在字形画家。 如果画家不存在,将安装默认的字形画家。
      • getPartialSpan

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

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

        Specified by:
        getPartialSpan在界面 TabableView
        参数
        p0 - 起始文档偏移量> = 0
        p1 - 结束文档偏移> = p0
        结果
        span> = 0
      • getEndOffset

        public int getEndOffset()
        获取此视图负责的模型部分。
        重写:
        getEndOffset在类 View
        结果
        结束偏移到模型中
        另请参见:
        View.getEndOffset()
      • paint

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

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

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

        重写:
        getMinimumSpan在课堂上 View
        参数
        axis - 可能是 View.X_AXISView.Y_AXIS
        结果
        可以渲染视图的最小跨度
        异常
        IllegalArgumentException - 如果 axis参数无效
        另请参见:
        View.getMinimumSpan(int)
      • getPreferredSpan

        public float getPreferredSpan​(int axis)
        确定此视图沿轴的首选跨度。
        Specified by:
        getPreferredSpan在类 View
        参数
        axis - 可以是View.X_AXIS或View.Y_AXIS
        结果
        视图要渲染到的范围> = 0.通常,视图会被告知渲染到返回的范围内,但不能保证。 父母可以选择调整视图大小或打破视图。
        另请参见:
        View.getPreferredSpan(int)
      • 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的对齐将是视图的中心。
      • 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 -其中可能需要拆分> = 0从 POS指定的相对长度。
        结果
        权重,应该是View.ForcedBreakWeight和View.BadBreakWeight之间的值。
        另请参见:
        LabelViewParagraphViewView.BadBreakWeightView.GoodBreakWeightView.ExcellentBreakWeightView.ForcedBreakWeight
      • breakView

        public View breakView​(int axis,
                              int p0,
                              float pos,
                              float len)
        在给定长度的给定轴上打破此视图。 实现此方法是为了尝试在空白位置上中断,并返回末尾带有空格的片段。 如果找不到空白位置,则使用最近的字符。
        重写:
        breakViewView
        参数
        axis - 可以是View.X_AXIS或View.Y_AXIS
        p0 - 模型中片段应该 p0的位置> = 0的位置。
        pos - 沿着轴的位置,断开的视图将占据> = 0.这对于像标签计算这样的事情可能很有用。
        len - 指定沿轴的距离,其中需要潜在的中断> = 0。
        结果
        如果视图可以被破坏,则表示给定范围的视图片段。 如果视图不支持中断行为,则返回视图本身。
        另请参见:
        View.breakView(int, int, float, float)
      • createFragment

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

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

        重写:
        createFragment在类 View
        参数
        p0 - 起始偏移量> = 0.这应该是大于或等于元素起始偏移量且小于元素结束偏移量的值。
        p1 - 结束偏移量> p0。 这应该是小于或等于元素结束偏移量并且大于起始偏移量的元素的值。
        结果
        视图片段,或者如果视图不支持分割成片段本身
        另请参见:
        LabelView
      • 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 - 要转换的位置
        a - 要分配的已分配区域
        direction - 当前位置的方向,可以被认为是键盘上常见的箭头键。 这可能是SwingConstants.WEST,SwingConstants.EAST,SwingConstants.NORTH或SwingConstants.SOUTH。
        b - 偏见
        biasRet - 返回的偏见
        结果
        模型中最能代表下一个位置视觉位置的位置。
        异常
        BadLocationException - 给定位置不是文档中的有效位置
        IllegalArgumentException - 无效指示