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

Class GlyphView

  • All Implemented Interfaces:
    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方法使用的。
        重写:
        cloneObject
        结果
        副本
        另请参见:
        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 - 起始文档offset> = 0
        p1 - 结束文件offset> = 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​()
        确定字形是否应加下划线。 如果为真,则应通过基线绘制下划线。
        结果
        如果字形应该加下划线
      • isStrikeThrough

        public boolean isStrikeThrough​()
        确定字形是否应该有删除线。 如果为真,则应通过字形的中心绘制一条线。
        结果
        如果字形应该有删除线
      • 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 - 起始文档offset> = 0
        p1 - 结束文件offset> = p0
        结果
        span> = 0
      • getEndOffset

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

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

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

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

        重写:
        getMinimumSpanView
        参数
        axis - 可以是 View.X_AXISView.Y_AXIS
        结果
        视图可以呈现的最小跨度
        异常
        IllegalArgumentException - 如果 axis参数无效
        另请参见:
        View.getMinimumSpan(int)
      • getPreferredSpan

        public float getPreferredSpan​(int axis)
        确定沿着轴的此视图的首选跨度。
        Specified by:
        getPreferredSpanView
        参数
        axis - 可以是View.X_AXIS或View.Y_AXIS
        结果
        视图想要呈现为> = 0的跨度。通常,视图被呈现到返回的跨度,尽管不能保证。 父母可以选择调整大小或打破视图。
        另请参见:
        View.getPreferredSpan(int)
      • getAlignment

        public float getAlignment​(int axis)
        确定沿着轴的该视图的所需对准。 对于标签,对齐方向是沿着y轴的字体基线,并且超类在x轴上对齐。
        重写:
        getAlignmentView
        参数
        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
        如果其他条件不发生。
        这通常会导致打破空格位置的行为,如果可以找到,否则在字符之间断开。
        重写:
        getBreakWeightView
        参数
        axis - 可以是View.X_AXIS或View.Y_AXIS
        pos - 断开视图> = 0开始的潜在位置。这可能有助于计算标签位置。
        len - 从 pos中指定潜在中断的相对长度> = 0。
        结果
        重量,它应该是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 - 模型中片段应该开始的位置> = 0。
        pos - 断开视图占据的轴的位置> = 0。这可能对标签计算等有用。
        len - 指定沿轴的距离,希望有潜在的断裂> = 0。
        结果
        表示给定跨度的视图的片段,如果视图可以被破坏。 如果视图不支持破坏行为,则返回视图本身。
        另请参见:
        View.breakView(int, int, float, float)
      • createFragment

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

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

        重写:
        createFragmentView
        参数
        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
        重写:
        getNextVisualPositionFromView
        参数
        pos - 转换的位置
        a - 要分配的区域
        direction - 从当前位置的方向,可以被认为是通常在键盘上找到的箭头键。 这可能是SwingConstants.WEST,SwingConstants.EAST,SwingConstants.NORTH或SwingConstants.SOUTH。
        b - 偏见
        biasRet - 返回的偏差
        结果
        模型中最能代表下一个位置视觉位置的位置。
        异常
        BadLocationException - 给定的位置不是文档中的有效位置
        IllegalArgumentException - 无效方向