模块  java.desktop

Class BasicTextUI

  • 实现的所有接口
    ViewFactory
    已知直接子类:
    BasicEditorPaneUIBasicTextAreaUIBasicTextFieldUIDefaultTextUI

    public abstract class BasicTextUI
    extends TextUI
    implements ViewFactory

    文本组件外观的基础。 这提供了基本编辑器视图和控制器服务,这些服务在为JTextComponent的扩展创建外观时可能很有用。

    大多数状态作为绑定属性保存在关联的JTextComponent中,UI会为各种属性安装默认值。 此默认设置将为所有属性安装一些内容。 通常,LAF实现会做更多。 LAF通常至少会安装密钥绑定。

    如果与JTextComponent关联的DocumentAbstractDocument的子类,则AbstractDocument还提供一些并发支持。 在任何改变模型的线程和Swing事件线程(预期渲染,模型/视图坐标转换等)之间序列化对View(或View层次结构)的访问。 对根视图的任何访问都应首先获取AbstractDocument上的读锁定,并在finally块中释放该锁定。

    定义的一个重要方法是getPropertyPrefix()方法,该方法用作从UIManager获取默认值的密钥的基础。 该字符串应该反映TextUI的类型(例如TextField,TextArea等),而不包含名称的特定LAF部分(例如Metal,Motif等)。

    为了构建模型的视图,可以采用以下策略之一。

    1. 一种策略是简单地在UI中重新定义ViewFactory接口。 默认情况下,此UI本身充当View实现的工厂。 这对简单的工厂很有用。 为此,重新实现create(javax.swing.text.Element)方法。
    2. 创建更复杂类型的文档的常见策略是让EditorKit实现返回工厂。 由于EditorKit绑定了维护一种文档所需的所有部分,因此工厂通常是其中的一个重要部分,应该由EditorKit实现生成。

    警告:此类的序列化对象与以后的Swing版本不兼容。 当前的序列化支持适用于运行相同版本Swing的应用程序之间的短期存储或RMI。 从1.4开始, java.beans软件包中添加了对所有JavaBeans java.beans长期存储的支持。 请参阅XMLEncoder

    • 构造方法详细信息

      • BasicTextUI

        public BasicTextUI()
        创建一个新的UI。
    • 方法详细信息

      • createCaret

        protected Caret createCaret()
        创建用于插入符的对象。 默认情况下,会创建一个BasicCaret实例。 可以重新定义此方法以提供实现InputPosition接口或JCaret的子类的其他内容。
        结果
        插入符号对象
      • createHighlighter

        protected Highlighter createHighlighter()
        创建用于添加高光的对象。 默认情况下,会创建BasicHighlighter的实例。 可以重新定义此方法以提供实现Highlighter接口或DefaultHighlighter子类的其他方法。
        结果
        荧光笔
      • getKeymapName

        protected String getKeymapName()
        获取将为此UI默认安装/使用的键映射的名称。 实现此目的是为了根据类名创建名称。 名称是已删除包前缀的类的名称。
        结果
        名字
      • createKeymap

        protected Keymap createKeymap()
        创建用于文本组件的键映射,并将任何必要的绑定安装到其中。 默认情况下,keymap在此类TextUI的所有实例之间共享。 keymap具有getKeymapName方法定义的名称。 如果未找到键映射,则使用JTextComponent的DEFAULT_KEYMAP。

        用于创建键映射的绑定集是使用通过组合getPropertyPrefix()方法和字符串.keyBindings形成的键从UIManager获取的。 该类型预计为JTextComponent.KeyBinding[]

        结果
        键盘图
        另请参见:
        getKeymapName()JTextComponent
      • propertyChange

        protected void propertyChange​(PropertyChangeEvent evt)
        在关联的JTextComponent上更改绑定属性时,将调用此方法。 这是一个钩子,UI实现可能会更改以反映UI如何显示JTextComponent子类的绑定属性。 这实现为什么都不做(即在调用此方法之前处理对JTextComponent本身的属性的响应)。 如果可编辑和/或启用状态发生更改,此实现将更新文本组件的背景。
        参数
        evt - 属性更改事件
      • getPropertyPrefix

        protected abstract String getPropertyPrefix()
        获取用作通过UIManager查找属性的键的名称。 这用作所有标准文本属性的前缀。
        结果
        名字
      • installDefaults

        protected void installDefaults()
        初始化组件属性,例如字体,前景,背景,插入颜色,选择颜色,所选文本颜色,禁用文本颜色和边框颜色。 仅当字体,前景和背景属性的当前值为null或UIResource时才设置它们,如果当前值为null,则设置其他属性。
        另请参见:
        uninstallDefaults()installUI(javax.swing.JComponent)
      • installListeners

        protected void installListeners()
        安装UI的侦听器。
      • uninstallListeners

        protected void uninstallListeners()
        卸载UI的侦听器。
      • installKeyboardActions

        protected void installKeyboardActions()
        注册键盘操作。
      • uninstallKeyboardActions

        protected void uninstallKeyboardActions()
        取消注册键盘操作。
      • paintBackground

        protected void paintBackground​(Graphics g)
        为视图绘制背景。 只有在关联组件上的isOpaque()为true时才会调用此方法。 默认设置是绘制组件的背景颜色。
        参数
        g - 图形上下文
      • getComponent

        protected final JTextComponent getComponent()
        获取与此UI实现关联的文本组件。 在安装ui之前,这将为null。
        结果
        编辑器组件
      • modelChanged

        protected void modelChanged()
        标志模型的变化。 只要模型发生变化,就会调用此方法。 它被实现为重建视图层次结构以表示关联模型的默认根元素。
      • setView

        protected final void setView​(View v)
        设置视图层次结构的当前根,并调用invalidate()。 如果有任何子组件,它们将被删除(即假设来自视图中嵌入的组件)。
        参数
        v - 根视图
      • paintSafely

        protected void paintSafely​(Graphics g)
        安全地绘制界面,保证模型不会从该线程的视图中更改。 这做了以下事情,从后到前呈现。
        1. 如果组件标记为不透明,则背景将以组件的当前背景颜色绘制。
        2. 绘制了高光(如果有的话)。
        3. 视图层次结构已绘制。
        4. 插入符号。
        参数
        g - 图形上下文
      • installUI

        public void installUI​(JComponent c)
        安装组件的UI。 这样做有以下几点。
        1. 如果客户端程序尚未设置opaque属性,则将关联组件设置为opaque。 这将导致组件的背景颜色被绘制。
        2. 将默认插入符号和突出显示器安装到关联的组件中。 仅当它们的当前值为null或实例为UIResource时,才会设置这些属性。
        3. 附加到编辑器和模型。 如果没有模型,则创建默认模型。
        4. 创建用于表示模型的视图工厂和视图层次结构。
        重写:
        installUI ,类 ComponentUI
        参数
        c - 编辑器组件
        另请参见:
        ComponentUI.installUI(javax.swing.JComponent)
      • getPreferredSize

        public Dimension getPreferredSize​(JComponent c)
        获取编辑器组件的首选大小。 如果在接收此请求之前已为组件指定了大小,则在请求视图层次结构的首选大小之前,它将设置视图层次结构的大小以反映组件的大小。 这允许格式化视图在回答请求之前格式化为当前组件大小。 其他视图不关心当前格式化的大小,并以任何方式给出相同的答案。
        重写:
        getPreferredSize在类 ComponentUI
        参数
        c - 编辑器组件
        结果
        尺寸
        另请参见:
        JComponent.getPreferredSize()LayoutManager.preferredLayoutSize(java.awt.Container)
      • getVisibleEditorRect

        protected Rectangle getVisibleEditorRect()
        获取赋予根视图的分配。 由于一系列不幸的历史事件,这种方法被不恰当地命名。 返回的Rectangle与可见性无关。 组件必须具有非零正大小才能计算此转换。
        结果
        根视图的边界框
      • damageRange

        public void damageRange​(JTextComponent t,
                                int p0,
                                int p1,
                                Position.Bias p0Bias,
                                Position.Bias p1Bias)
        导致负责模型的给定部分的视图部分被重新绘制。
        Specified by:
        damageRange在类 TextUI
        参数
        p0 - 范围的开头> = 0
        p1 - 范围的结尾> = p0
        t - 安装此UI的文本组件
        p0Bias - 第一个字符位置偏向前一个字符或下一个字符
        p1Bias - 第二个字符位置偏向前一个字符或下一个字符
      • getRootView

        public View getRootView​(JTextComponent tc)
        通过分配可以遍历的关联文本组件(即层次结构的根)来获取视图,以确定模型在空间上的表示方式。

        警告:可以从根视图遍历视图层次结构,也可以执行其他操作。 以这种方式完成的事情不能像通过TextUI的简单方法调用一样受到保护。 因此,在存在并发性的情况下,必须通过调用此方法的任何逻辑来安排正确的操作!

        Specified by:
        getRootView ,类 TextUI
        参数
        tc - 安装此UI的文本组件
        结果
        风景
        另请参见:
        TextUI.getRootView(javax.swing.text.JTextComponent)
      • create

        public View create​(Element elem)
        创建元素的视图。 如果子类希望直接实现生成视图的工厂,则应重新实现此方法。 默认情况下,它只返回null,表示它无法表示该元素。
        Specified by:
        create在界面 ViewFactory
        参数
        elem - 元素
        结果
        风景
        另请参见:
        View
      • create

        public View create​(Element elem,
                           int p0,
                           int p1)
        创建元素的视图。 如果子类希望直接实现生成视图的工厂,则应重新实现此方法。 默认情况下,它只返回null,表示它无法表示元素的一部分。
        参数
        elem - 元素
        p0 - 起始偏移量> = 0
        p1 - 结束偏移量> = p0
        结果
        风景