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

Class JTextComponent

  • All Implemented Interfaces:
    ImageObserverMenuContainerSerializableAccessibleScrollable
    已知直接子类:
    JEditorPaneJTextAreaJTextField


    @JavaBean(defaultProperty="UI")
    public abstract class JTextComponent
    extends JComponent
    implements Scrollable, Accessible
    JTextComponent是swing文本组件的基类。 它试图兼容java.awt.TextComponent类,可以合理地这样做。 还提供了其他服务,以获得更多的灵活性(超出可插拔的UI和bean支持)。 您可以在“Java教程”中的一节中找到有关如何使用此类提供的功能的信息,如General Rules for Using Text Components
    插入变化
    插入符号是摆放文本组件中的可插拔对象。 更改插入位置和选择的通知将发送到已在文本组件中注册的CaretListener接口的实现。 UI将安装默认插入符号,除非设置了自定义插入符号。
    默认情况下,插入符号跟踪在事件调度线程上执行的所有文档更改,并相应地更新其位置,如果插入发生在插入符号位置之前或插入符号位置,或者在插入符号位置之前发生删除。 DefaultCaret尝试使其自身可见,这可能导致文本组件在JScrollPane内的JScrollPane 默认的插入行为可以通过DefaultCaret.setUpdatePolicy(int)方法更改。
    注意 :不可编辑的文本组件也有一个插入符,尽管它可能不会被绘制。
    命令
    文本组件提供了许多可用于操作组件的命令。 这基本上是组件表达其功能的方式。 这些都是用摆动Action来表示的,使用TextAction实现。 文本组件支持的一组命令可以通过getActions()方法找到。 这些操作可以绑定到按钮等触发的关键事件。
    文字输入
    文本组件支持灵活和国际化的文本输入,使用键盘映射和输入法框架,同时保持与AWT侦听器模型的兼容性。

    A Keymap允许应用程序将关键笔划绑定到动作。 为了允许键映射在多个文本组件之间共享,他们可以使用扩展TextAction TextAction可以确定最近有哪些JTextComponent或具有焦点,因此是动作的主题(在发送到该操作的ActionEvent不包含目标文本组件作为其来源的情况下)。

    Input Method Framework允许文本组件与输入方法交互,单独的软件组件预处理事件,以便用户使用键少得多的键盘输入数千个不同的字符。 JTextComponent是框架的活动客户端 ,因此它实现了与输入法交互的首选用户界面。 因此,一些关键事件不会到达文本组件,因为它们由输入法处理,而一些文本输入则将文本组件作为承诺文本在InputMethodEvent内作为关键事件。 完整的文本输入是keyTyped关键事件中的字符和输入法事件中的提交文本的组合。

    AWT侦听器模型允许应用程序将事件侦听器附加到组件,以将事件绑定到操作。 Swing鼓励使用键盘映射而不是监听器,但通过为监听器提供通过使用它来窃取事件的机会来保持与监听器的兼容性。

    键盘事件和输入法事件在以下阶段进行处理,每个阶段都可以消耗事件:

    Stages of keyboard and input method event handling Stage KeyEvent InputMethodEvent 1. input methods (generated here) 2. focus manager 3. registered key listeners registered input method listeners 4. input method handling in JTextComponent 5. keymap handling using the current keymap 6. keyboard handling in JComponent (e.g. accelerators, component navigation, etc.)

    为了保持与听取关键事件但不知道输入法事件的应用程序的兼容性,第4阶段的输入法处理为不处理输入法事件的组件提供兼容性模式。 对于这些组件,承诺文本将转换为keyTyped密钥事件,并在第3阶段开始的密钥事件管道中处理,而不是在输入法事件管道中进行处理。

    默认情况下,组件将创建一个由所有JTextComponent实例共享的键盘映射(名为DEFAULT_KEYMAP )作为默认键盘映射。 通常,外观实现将安装不同的键盘映射,解析为不同键盘映射中找不到的绑定的默认键盘映射。 最小绑定包括:

    • 将内容插入到可打印键的编辑器中。
    • 用backspace和del键删除内容。
    • 插座运动向前和向后
    模型/视图分割
    文本组件具有模型视图拆分。 文本组件将用于表示模型,视图和控制器的对象拉到一起。 文本文档模型可以由作为模型的观察者的其他视图共享(例如,文档可以被多个组件共享)。

    显示Controller,Document,Events和ViewFactory之间的交互图

    该模型由Document界面定义。 这旨在提供灵活的文本存储机制,可以在编辑过程中跟踪变化,并可以扩展到更复杂的模型。 模型接口旨在捕获由SGML给出的表达能力,SGML是用于表示各种内容的系统。 对文件的每个修改都会将更改的详细信息通知给所有观察员,形式为DocumentEvent ,允许视图与模型保持最新。 此事件发送给已实施DocumentListener接口的观察员,并注意观察模型的兴趣。

    地点信息
    提供了确定视图中文本位置的能力。 有两种方法, modelToView(int)viewToModel(java.awt.Point)用于确定此信息。
    撤消/重做支持
    提供支持编辑历史机制以允许撤消/重做操作。 默认情况下,文本组件本身不提供历史缓冲区,但提供可与历史缓冲区配合使用的UndoableEdit记录,以提供撤消/重做支持。 支持由Document模型提供,它允许用户附加UndoableEditListener实现。
    线程安全
    swing文本组件提供线程安全操作的一些支持。 由于文本组件的高度可配置性,可以规避所提供的保护。 保护主要来自模型,因此AbstractDocument的文档描述了所提供保护的假设。 可以安全地异步调用的方法用注释标记。
    换行
    有关如何处理换行符的讨论,请参阅DefaultEditorKit
    打印支持
    提供几种print方法用于基本文件打印。 如果需要更高级的打印,请使用getPrintable(java.text.MessageFormat, java.text.MessageFormat)方法。

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

    另请参见:
    DocumentDocumentEventDocumentListenerCaretCaretEventCaretListenerTextUIViewViewFactorySerialized Form
    • 字段详细信息

      • FOCUS_ACCELERATOR_KEY

        public static final String FOCUS_ACCELERATOR_KEY
        焦点加速器的绑定属性名称。
        另请参见:
        Constant Field Values
      • DEFAULT_KEYMAP

        public static final String DEFAULT_KEYMAP
        所有 JTextComponent实例将共享的默认键盘映射,除非它们具有不同的键映射集。
        另请参见:
        Constant Field Values
    • 构造方法详细信息

      • JTextComponent

        public JTextComponent​()
        创建一个新的JTextComponent 建立插入符事件侦听器,并安装可插入的UI。 组件被标记为可编辑。 不使用布局管理器,因为布局由文本的视图子系统管理。 文档模型设置为null
    • 方法详细信息

      • getUI

        public TextUI getUI​()
        获取此面向文本的编辑器的用户界面工厂。
        重写:
        getUIJComponent
        结果
        工厂
      • setUI

        public void setUI​(TextUI ui)
        为这个面向文本的编辑器设置用户界面工厂。
        参数
        ui - 工厂
      • addCaretListener

        public void addCaretListener​(CaretListener listener)
        添加插入符号侦听器以通知插入符的任何更改。
        参数
        listener - 要添加的侦听器
        另请参见:
        CaretEvent
      • removeCaretListener

        public void removeCaretListener​(CaretListener listener)
        删除插入符号侦听器。
        参数
        listener - 要删除的侦听器
        另请参见:
        CaretEvent
      • fireCaretUpdate

        protected void fireCaretUpdate​(CaretEvent e)
        通知所有在此事件类型上通知有兴趣的听众。 事件实例使用传递给fire方法的参数进行懒惰创建。 监听器列表以最后一个方式进行处理。
        参数
        e - 事件
        另请参见:
        EventListenerList
      • setDocument

        @BeanProperty(expert=true,
                      description="the text document model")
        public void setDocument​(Document doc)
        将编辑器与文本文档相关联。 目前注册的工厂用于构建文档的视图,该文档在重新验证后由编辑器显示。 PropertyChange事件(“document”)被传播给每个监听器。
        参数
        doc - 要显示/编辑的文档
        另请参见:
        getDocument()
      • getDocument

        public Document getDocument​()
        获取与编辑器相关联的模型。 这主要是为了获得文本编辑器所需的最小数量的UI。 子类将返回通常是扩展Document的模型的实际类型。
        结果
        该模型
      • setComponentOrientation

        public void setComponentOrientation​(ComponentOrientation o)
        描述从类别复制: Component
        设置用于对该组件中的元素或文本进行排序的语言敏感方向。 语言敏感的LayoutManagerComponent子类将使用此属性来确定如何布局和绘制组件。

        在施工时,组件的方向设置为ComponentOrientation.UNKNOWN ,表示尚未明确指定。 UNKNOWN方向的行为与ComponentOrientation.LEFT_TO_RIGHT相同。

        要设置单个组件的方向,请使用此方法。 要设置整个组件层次结构的方向,请使用applyComponentOrientation

        该方法更改布局相关信息,因此使组件层次结构无效。

        重写:
        setComponentOrientationComponent
        参数
        o - 要设置的方向
        另请参见:
        ComponentOrientationComponent.invalidate()
      • getActions

        @BeanProperty(bound=false)
        public Action[] getActions​()
        获取编辑器的命令列表。 这是由编辑器本身支持的命令的集合所增加的插入UI支持的命令列表。 这些对绑定到事件是有用的,例如在键盘映射中。
        结果
        命令列表
      • setMargin

        @BeanProperty(description="desired space between the border and text area")
        public void setMargin​(Insets m)
        在文本组件的边框和文本之间设置边距空间。 文本组件的默认Border对象将使用此值创建适当的边距。 但是,如果在文本组件上设置了非默认边框,那么Border对象有责任创建适当的边距空间(否则此属性将被有效地忽略)。 这将导致重新绘制组件。 将PropertyChange事件(“margin”)发送给所有侦听器。
        参数
        m - 边框和文本之间的空格
      • getMargin

        public Insets getMargin​()
        返回文本组件的边框和文本之间的边距。
        结果
        边际
      • setNavigationFilter

        public void setNavigationFilter​(NavigationFilter filter)
        设置NavigationFilter NavigationFilterDefaultCaret使用,默认光标移动动作作为限制光标移动的一种方式。
        参数
        filter - 过滤器
        从以下版本开始:
        1.4
      • getNavigationFilter

        public NavigationFilter getNavigationFilter​()
        返回NavigationFilter NavigationFilterDefaultCaret使用,默认光标移动动作作为限制光标移动的一种方式。 空返回值意味着光标的移动和选择不应该被限制。
        结果
        NavigationFilter
        从以下版本开始:
        1.4
      • getCaret

        public Caret getCaret​()
        获取允许通过视图进行文本导向的插入符号。
        结果
        插入符号
      • setCaret

        @BeanProperty(expert=true,
                      description="the caret used to select/navigate")
        public void setCaret​(Caret c)
        设置要使用的插入符号。 默认情况下,这将由安装的UI设置。 如果需要,可以将其更改为自定义插入符。 设置插入符将导致PropertyChange事件(“caret”)被触发。
        参数
        c - 插入符号
        另请参见:
        getCaret()
      • getHighlighter

        public Highlighter getHighlighter​()
        获取负责制作亮点的对象。
        结果
        荧光笔
      • setHighlighter

        @BeanProperty(expert=true,
                      description="object responsible for background highlights")
        public void setHighlighter​(Highlighter h)
        设置要使用的荧光笔。 默认情况下,这将由安装的UI设置。 如果需要,可以将其更改为自定义荧光笔。 荧光笔可以设置为null以禁用它。 当安装新的荧光笔时触发PropertyChange事件(“荧光笔”)。
        参数
        h - 荧光笔
        另请参见:
        getHighlighter()
      • setKeymap

        @BeanProperty(description="set of key event to action bindings to use")
        public void setKeymap​(Keymap map)
        设置用于将事件绑定到操作的键盘映射。 设置为null有效禁用键盘输入。 当安装新的键盘映射时,将会触发一个PropertyChange事件(“keymap”)。
        参数
        map - 键盘映射
        另请参见:
        getKeymap()
      • setDragEnabled

        @BeanProperty(bound=false,
                      description="determines whether automatic drag handling is enabled")
        public void setDragEnabled​(boolean b)
        打开或关闭自动拖动处理。 为了启用自动拖动处理,此属性应设置为true ,组件的TransferHandler需要为non-null dragEnabled属性的默认值为false

        尊重这个属性的工作,并承认用户拖动手势,在于外观和感觉的实现,特别是组件的TextUI 当启用自动拖动处理时,大多数外观(包括BasicLookAndFeel子类)的外观和感觉都可以在用户将鼠标按在选区上的同时开始拖放操作,然后将鼠标移动几个像素。 因此,将此属性设置为true可以对选择行为的选择产生微妙的影响。

        如果使用忽略此属性的外观,您仍然可以通过在组件的TransferHandler上调用exportAsDrag来开始拖放操作。

        参数
        b - 是否启用自动拖动处理
        异常
        HeadlessException - 如果 btrueGraphicsEnvironment.isHeadless()返回 true
        从以下版本开始:
        1.4
        另请参见:
        GraphicsEnvironment.isHeadless()getDragEnabled()JComponent.setTransferHandler(javax.swing.TransferHandler)TransferHandler
      • getDragEnabled

        public boolean getDragEnabled​()
        返回是否启用自动拖动处理。
        结果
        的价值 dragEnabled属性
        从以下版本开始:
        1.4
        另请参见:
        setDragEnabled(boolean)
      • setDropMode

        public final void setDropMode​(DropMode dropMode)
        设置此组件的下拉模式。 为了向后兼容,此属性的默认值为DropMode.USE_SELECTION 但是,为了改善用户体验,建议使用DropMode.INSERT 它提供了类似的行为,在文本位置之间删除,但这样做,而不影响实际的文本选择和插入位置。

        JTextComponents支持以下丢弃模式:

        • DropMode.USE_SELECTION
        • DropMode.INSERT

        如果该组件具有TransferHandler接受丢弃,则丢弃模式才有意义。

        参数
        dropMode - 使用的下拉模式
        异常
        IllegalArgumentException - 如果不支持拖放模式或 null
        从以下版本开始:
        1.6
        另请参见:
        getDropMode()getDropLocation()JComponent.setTransferHandler(javax.swing.TransferHandler)TransferHandler
      • getKeymap

        public Keymap getKeymap​()
        获取此文本组件中当前活动的键盘图。
        结果
        键盘图
      • addKeymap

        public static Keymap addKeymap​(String nm,
                                       Keymap parent)
        在键盘层次结构中添加一个新的键盘映射。 键盘映射绑定从下到上解决,因此在子节点中指定的属性将覆盖父项中指定的属性。
        参数
        nm - 键映射的名称(在文档中的命名键映射的集合中必须是唯一的); 如果键盘映射未命名,则名称可能为null ,但是调用者负责管理返回的引用,因为未命名的键盘映射无法通过名称获取
        parent - 父键盘映射; 这可能是null如果未指定的绑定不需要在某些其他键盘映射解决
        结果
        键盘图
      • removeKeymap

        public static Keymap removeKeymap​(String nm)
        删除以前添加到文档的命名键盘映射。 具有null名称的键盘映射可能不会以此方式删除。
        参数
        nm - 要删除的键盘映射的名称
        结果
        被删除的键盘映射
      • getKeymap

        public static Keymap getKeymap​(String nm)
        获取先前添加到文档的命名键盘映射。 这不适用于null键盘映射。
        参数
        nm - 键盘映射的名称
        结果
        键盘图
      • loadKeymap

        public static void loadKeymap​(Keymap map,
                                      JTextComponent.KeyBinding[] bindings,
                                      Action[] actions)

        用一堆绑定加载键盘映射。 这可以用来取一个静态的定义表,并把它们加载到一些keymap中。 以下示例说明将某些键绑定到与JTextComponent关联的剪切,复制和粘贴操作的示例。 完成此操作的代码片段可能如下所示:

           static final JTextComponent.KeyBinding[] defaultBindings = { new JTextComponent.KeyBinding( KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.CTRL_MASK), DefaultEditorKit.copyAction), new JTextComponent.KeyBinding( KeyStroke.getKeyStroke(KeyEvent.VK_V, InputEvent.CTRL_MASK), DefaultEditorKit.pasteAction), new JTextComponent.KeyBinding( KeyStroke.getKeyStroke(KeyEvent.VK_X, InputEvent.CTRL_MASK), DefaultEditorKit.cutAction), }; JTextComponent c = new JTextPane(); Keymap k = c.getKeymap(); JTextComponent.loadKeymap(k, defaultBindings, c.getActions());  
        绑定和操作的集合可能为空,但必须为非null
        参数
        map - 键盘映射
        bindings - 绑定
        actions - 一组动作
      • getCaretColor

        public Color getCaretColor​()
        获取当前用于渲染插入符号的颜色。
        结果
        颜色
      • setCaretColor

        @BeanProperty(preferred=true,
                      description="the color used to render the caret")
        public void setCaretColor​(Color c)
        设置用于渲染插入符号的当前颜色。 设置为null有效地恢复默认颜色。 设置颜色会导致PropertyChange事件(“caretColor”)被触发。
        参数
        c - 颜色
        另请参见:
        getCaretColor()
      • getSelectionColor

        public Color getSelectionColor​()
        获取用于渲染选择的当前颜色。
        结果
        颜色
      • setSelectionColor

        @BeanProperty(preferred=true,
                      description="color used to render selection background")
        public void setSelectionColor​(Color c)
        设置用于渲染选择的当前颜色。 将颜色设置为null与设置Color.white相同。 设置颜色会导致PropertyChange事件(“selectionColor”)。
        参数
        c - 颜色
        另请参见:
        getSelectionColor()
      • getSelectedTextColor

        public Color getSelectedTextColor​()
        获取用于呈现所选文本的当前颜色。
        结果
        颜色
      • setSelectedTextColor

        @BeanProperty(preferred=true,
                      description="color used to render selected text")
        public void setSelectedTextColor​(Color c)
        设置用于渲染所选文本的当前颜色。 将颜色设置为nullColor.black相同。 设置颜色会导致PropertyChange事件(“selectedTextColor”)被触发。
        参数
        c - 颜色
        另请参见:
        getSelectedTextColor()
      • getDisabledTextColor

        public Color getDisabledTextColor​()
        获取用于呈现禁用的文本的当前颜色。
        结果
        颜色
      • setDisabledTextColor

        @BeanProperty(preferred=true,
                      description="color used to render disabled text")
        public void setDisabledTextColor​(Color c)
        设置用于呈现禁用的文本的当前颜色。 设置颜色会触发PropertyChange事件(“disabledTextColor”)。
        参数
        c - 颜色
        另请参见:
        getDisabledTextColor()
      • replaceSelection

        public void replaceSelection​(String content)
        用给定字符串表示的新内容替换当前所选内容。 如果没有选择,这相当于给定文本的插入。 如果没有替换文本,则相当于删除当前选择。

        这是由用于插入绑定到键盘映射操作的内容的动作的默认实现使用的方法。

        参数
        content - 用于替换选择的内容
      • getText

        public String getText​(int offs,
                              int len)
                       throws BadLocationException
        获取由组件表示的文本的一部分。 如果长度为0,则返回一个空字符串。
        参数
        offs - 偏移量为0
        len - 长度 len
        结果
        文本
        异常
        BadLocationException - 如果偏移或长度无效
      • viewToModel

        @Deprecated(since="9")
        public int viewToModel​(Point pt)
        已过时。 替换为viewToModel2D(Point2D)
        将视图坐标系中的给定位置转换为模型中最近的代表位置。 组件必须有一个正的大小才能使这个翻译被计算(即,在组件大小之前,不能计算布局)。 组件不必可见或画。
        参数
        pt - 视图中的位置翻译
        结果
        从文档开头的偏移量为0,如果组件还没有正的大小,则为-1。
        另请参见:
        TextUI.viewToModel(javax.swing.text.JTextComponent, java.awt.Point)
      • cut

        public void cut​()
        将相关文本模型中当前选定的范围传输到系统剪贴板,从模型中删除内容。 当前选择被重置。 对于null选择不作任何null
        另请参见:
        Toolkit.getSystemClipboard()Clipboard
      • copy

        public void copy​()
        将相关文本模型中的当前选定范围传输到系统剪贴板,将文本模型中的内容留下。 目前的选择保持不变。 对于null选择不作任何null
        另请参见:
        Toolkit.getSystemClipboard()Clipboard
      • paste

        public void paste​()
        将系统剪贴板的内容传输到关联的文本模型中。 如果相关视图中有选择,则会被剪贴板的内容替换。 如果没有选择,则剪贴板内容将插入相关视图中当前插入位置的前面。 如果剪贴板是空的,什么都不做。
        另请参见:
        replaceSelection(java.lang.String)Toolkit.getSystemClipboard()Clipboard
      • moveCaretPosition

        public void moveCaretPosition​(int pos)
        将插入符号移动到一个新的位置,留下最后一次setCaretPosition所定义的标记。 这形成一个选择。 如果文件是null ,什么都不做。 该位置必须介于0和组件文本的长度之间,否则抛出异常。
        参数
        pos - 的位置
        异常
        IllegalArgumentException - 如果为 position提供的值小于零或大于组件的文本长度
        另请参见:
        setCaretPosition(int)
      • setFocusAccelerator

        @BeanProperty(description="accelerator character used to grab focus")
        public void setFocusAccelerator​(char aKey)
        设置将导致接收文本组件获得焦点的关键加速器。 加速器将是平台特定的修改键和给定的字符(转换为大写)的组合键。 例如,ALT键在Windows上用作修饰符,并且在Mac上使用CTRL + ALT组合。 默认情况下,没有焦点加速键。 任何以前的关键加速器设置将被替代。 将注册'\ 0'键设置,并具有关闭对焦加速器的效果。 设置新密钥时,将触发PropertyChange事件(FOCUS_ACCELERATOR_KEY)。
        参数
        aKey - 关键
        另请参见:
        getFocusAccelerator()
      • getFocusAccelerator

        public char getFocusAccelerator​()
        返回将导致接收文本组件获得焦点的关键加速器。 如果没有设置焦点加速器,返回'\ 0'。
        结果
        钥匙
      • read

        public void read​(Reader in,
                         Object desc)
                  throws IOException
        从流初始化。 这将创建一个适合组件的类型的模型,并从流中初始化模型。 默认情况下,这将以纯文本的形式加载模型。 模型的上一个内容被丢弃。
        参数
        in - 要读取的流
        desc - 描述流的对象; 这可能是字符串,文件,URL等。某些类型的文档(例如html)可能可以使用这些信息; 如果非null ,则作为文档的属性添加
        异常
        IOException - 被用于初始化的流抛出
        另请参见:
        EditorKit.createDefaultDocument()setDocument(javax.swing.text.Document)PlainDocument
      • write

        public void write​(Writer out)
                   throws IOException
        将模型的内容存储到给定的流中。 默认情况下,这将以纯文本形式存储模型。
        参数
        out - 输出流
        异常
        IOException - 在任何I / O错误
      • setCaretPosition

        @BeanProperty(bound=false,
                      description="the caret position")
        public void setCaretPosition​(int position)
        设置TextComponent的文本插入插入符的TextComponent 请注意,插入符号跟踪更改,因此,如果组件的底层文本已更改,则可能会移动。 如果文件是null ,什么都不做。 该位置必须介于0和组件文本的长度之间,否则抛出异常。
        参数
        position - 位置
        异常
        IllegalArgumentException - 如果为 position提供的值小于零或大于组件的文本长度
      • getCaretPosition

        public int getCaretPosition​()
        返回文本组件的文本插入符号的位置。
        结果
        文本部分的文本插入符号的位置为0
      • setText

        @BeanProperty(bound=false,
                      description="the text of this component")
        public void setText​(String t)
        将此TextComponent的文本设置为指定的文本。 如果文字为null或为空,则具有简单删除旧文本的效果。 当插入文本时,生成的插入符位置由插入符类的实现确定。

        请注意,文本不是绑定属性,因此在更改时不会PropertyChangeEvent 要收听对文本的更改,请使用DocumentListener

        参数
        t - 要设置的新文本
        另请参见:
        getText(int, int)DefaultCaret
      • getText

        public String getText​()
        返回此TextComponent包含的文本。 如果底层文件是null ,会给出一个NullPointerException 请注意,文本不是绑定属性,因此在更改时不会PropertyChangeEvent 要收听对文本的更改,请使用DocumentListener
        结果
        文本
        异常
        NullPointerException - 如果文档是 null
        另请参见:
        setText(java.lang.String)
      • isEditable

        public boolean isEditable​()
        返回指示此 TextComponent是否可编辑的布尔值。
        结果
        布尔值
        另请参见:
        setEditable(boolean)
      • setEditable

        @BeanProperty(description="specifies if the text can be edited")
        public void setEditable​(boolean b)
        设置指定的布尔值以指示此TextComponent是否应该可编辑。 当状态更改时触发PropertyChange事件(“editable”)。
        参数
        b - 要设置的布尔值
        另请参见:
        isEditable()
      • getSelectionStart

        public int getSelectionStart​()
        返回所选文本的起始位置。 为空文档返回0,如果没有选择,则返回点数。
        结果
        起始位置≥0
      • setSelectionStart

        @BeanProperty(bound=false,
                      description="starting location of the selection.")
        public void setSelectionStart​(int selectionStart)
        将选择开始设置为指定位置。 新的起点被限制在当前选择结束之前或之前。

        这可用于向后兼容到java.awt.TextComponent上称为此方法的代码。 这是为了转发到维护实际选择的Caret实现。

        参数
        selectionStart - 文本的起始位置≠0
      • getSelectionEnd

        public int getSelectionEnd​()
        返回所选文本的结束位置。 如果文档为空,返回0,如果没有选择,则返回点数。
        结果
        最终位置为¥0
      • setSelectionEnd

        @BeanProperty(bound=false,
                      description="ending location of the selection.")
        public void setSelectionEnd​(int selectionEnd)
        将选择结束设置为指定位置。 新的终点被限制在当前选择开始之后或之后。

        这可以用于向后兼容到java.awt.TextComponent上称为此方法的代码。 这是为了转发到维护实际选择的Caret实现。

        参数
        selectionEnd - 文本的最终位置 selectionEnd ¥0
      • select

        public void select​(int selectionStart,
                           int selectionEnd)
        选择指定的开始和结束位置之间的文本。

        该方法设置所选文本的开始和结束位置,强制开始位置必须大于或等于零的限制。 结束位置必须大于或等于起始位置,小于或等于文本组件文本的长度。

        如果调用者提供不一致或超出范围的值,则该方法将静默地强制执行这些约束,并且不会失败。 具体来说,如果起始位置或结束位置大于文本的长度,则将其重置为等于文本长度。 如果起始位置小于零,则将其复位为零,如果最终位置小于起始位置,则将其复位到起始位置。

        此呼叫用于向后兼容。 它被路由到一个呼叫setCaretPosition随后打电话给moveCaretPosition 管理选择的首选方法是直接调用这些方法。

        参数
        selectionStart - 文本的起始位置
        selectionEnd - 文本的最终位置
        另请参见:
        setCaretPosition(int)moveCaretPosition(int)
      • selectAll

        public void selectAll​()
        选择TextComponent中的所有文本。 一个null或空文件没有。
      • getScrollableUnitIncrement

        public int getScrollableUnitIncrement​(Rectangle visibleRect,
                                              int orientation,
                                              int direction)
        显示逻辑行或列的组件应计算将根据取向值完全暴露一个新行或列的滚动增量。 理想情况下,组件应通过返回完全暴露项目所需的距离来处理部分暴露的行或列。

        这样做的默认实现是简单地返回10%的可见区域。 子类可能能够提供更合理的价值。

        Specified by:
        getScrollableUnitIncrement在接口 Scrollable
        参数
        visibleRect - 在视口内可见的视图区域
        orientation - SwingConstants.VERTICALSwingConstants.HORIZONTAL
        direction - 向上/向左滚动小于零,大于零为向下/向右
        结果
        在指定方向滚动的“单位”增量
        异常
        IllegalArgumentException - 针对无效方向
        另请参见:
        JScrollBar.setUnitIncrement(int)
      • getScrollableBlockIncrement

        public int getScrollableBlockIncrement​(Rectangle visibleRect,
                                               int orientation,
                                               int direction)
        显示逻辑行或列的组件应计算将根据取向值完全暴露一行行或列的滚动增量。

        这样做的默认实现是简单地返回可见区域。 子类可能会提供更合理的价值。

        Specified by:
        getScrollableBlockIncrement在接口 Scrollable
        参数
        visibleRect - 在视口内可见的视图区域
        orientation - SwingConstants.VERTICALSwingConstants.HORIZONTAL
        direction - 向上/向左滚动小于0,向下/向右大于零
        结果
        在指定方向滚动的“块”增量
        异常
        IllegalArgumentException - 针对无效方向
        另请参见:
        JScrollBar.setBlockIncrement(int)
      • getScrollableTracksViewportWidth

        @BeanProperty(bound=false)
        public boolean getScrollableTracksViewportWidth​()
        如果视口应始终强制此Scrollable的宽度与视口的宽度相匹配,则返回true。 例如,支持换行的常规文本视图在此处将返回true,因为包装线条不会超出视口右边缘消失。 请注意,对于返回true Scrollable ,其祖先是JScrollPane有效地禁用水平滚动。

        滚动容器,如JViewport ,将在每次验证时使用此方法。

        Specified by:
        getScrollableTracksViewportWidth在接口 Scrollable
        结果
        如果视口应该强制 Scrollable的宽度来匹配自己的话
      • getScrollableTracksViewportHeight

        @BeanProperty(bound=false)
        public boolean getScrollableTracksViewportHeight​()
        如果视口应始终强制此Scrollable的高度与视口的高度相匹配,则返回true。 例如,从左到右列流动文本的柱状文本视图可以通过在此返回true来有效地禁用垂直滚动。

        滚动容器,如JViewport ,将在每次验证时使用此方法。

        Specified by:
        getScrollableTracksViewportHeight在接口 Scrollable
        结果
        如果视口应强制Scrollables高度匹配自己的高度,则为true
      • print

        public boolean print​(MessageFormat headerFormat,
                             MessageFormat footerFormat,
                             boolean showPrintDialog,
                             PrintService service,
                             PrintRequestAttributeSet attributes,
                             boolean interactive)
                      throws PrinterException
        打印JTextComponent的内容。 注意:此方法将阻止打印完成。

        页面和页脚文本可以通过提供MessageFormat参数添加到输出。 打印代码从格式请求Strings ,提供可以包括在格式化字符串中的单个项目:表示当前页码的Integer

        showPrintDialog boolean参数允许您指定是否向用户显示打印对话框。 如果是这样,用户可以使用对话框来更改打印属性,甚至取消打印。

        service允许您为打印对话框提供初始的PrintService ,或者在对话框未显示时指定PrintService进行打印。

        attributes可以用于提供打印对话框的初始值,或者在对话框未显示时提供所需的属性。 attributes可用于控制作业如何打印,例如双面单面

        interactive boolean参数允许您指定是否以交互模式执行打印。 如果true ,打印过程中将显示一个具有中止选项的进度对话框。 事件调度线程调用print时,此对话框是 态的,否则为非模态 警告 :使用interactive false事件分派线程上调用此方法interactive false阻止所有事件(包括重绘)等待处理,直到打印完成。 只有在没有可视化GUI的应用程序打印时才建议使用。

        注意:在无头模式下, showPrintDialoginteractive参数被忽略,不显示对话框。

        这种方法可确保在打印期间不会突变document 为了在视觉上指示,在打印的持续时间内设置setEnabled(false)

        此方法使用getPrintable(java.text.MessageFormat, java.text.MessageFormat)呈现文档内容。

        这种方法是线程安全的,尽管大多数Swing方法都不是。 详情请见Concurrency in Swing

        样品用法 此代码段显示跨平台打印对话框,然后以交互模式打印JTextComponent ,除非用户取消对话框:

          textComponent.print(new MessageFormat("My text component header"),
             new MessageFormat("Footer. Page - {0}"), true, null, null, true); 

        事件分派线程执行此代码执行背景打印。 以下图案可能用于背景打印:

          FutureTask<Boolean> future =
                 new FutureTask<Boolean>(
                     new Callable<Boolean>() {
                         public Boolean call() {
                             return textComponent.print(.....);
                         }
                     });
             executor.execute(future); 
        参数
        headerFormat - 文本,在 MessageFormat ,用作标题,或 null用于无标题
        footerFormat - 文字, MessageFormat ,用作页脚,或 null为无页脚
        showPrintDialog - true显示打印对话框,否则为 false
        service - 初始 PrintService ,或 nullnull
        attributes - 要应用于打印作业的作业属性,或 null作为无
        interactive - 是否以交互模式打印
        结果
        true ,除非用户取消打印
        异常
        PrinterException - 如果打印系统中的错误导致作业中止
        SecurityException - 如果此线程不允许启动打印作业请求
        从以下版本开始:
        1.6
        另请参见:
        getPrintable(java.text.MessageFormat, java.text.MessageFormat)MessageFormatGraphicsEnvironment.isHeadless()FutureTask
      • getPrintable

        public Printable getPrintable​(MessageFormat headerFormat,
                                      MessageFormat footerFormat)
        返回一个Printable用于打印此JTextComponent的内容。 返回的Printable打印文档,除了重新格式化以适合纸张外,在屏幕上显示。 返回的Printable可以包裹在另一个Printable中,以创建复杂的报告和文档。

        Printable股票document与这JTextComponent 开发商有责任确保在使用document不会突变Printable 打印期间document突变时打印行为未定义。

        页面和页脚文本可以通过提供MessageFormat参数添加到输出。 打印代码从格式请求Strings ,提供可以包括在格式化字符串中的单个项目:表示当前页码的Integer

        打印时返回的Printable ,为页面大小适当地格式化文档内容。 为了正确的换imageable width ,所有页面的imageable width必须相同。 PageFormat.getImageableWidth()

        这种方法是线程安全的,尽管大多数Swing方法都不是。 有关详细信息,请参阅Concurrency in Swing

        返回的Printable可以打印在任何线程上。

        此实现返回Printable事件分派线程上执行所有绘画,无论使用什么线程。

        参数
        headerFormat - 文本,在 MessageFormat ,用作标题,或 null用于无标题
        footerFormat - 文字,在 MessageFormat ,作为页脚使用,或 null为无页脚
        结果
        一个 Printable对该打印内容使用 JTextComponent
        从以下版本开始:
        1.6
        另请参见:
        PrintablePageFormatDocument.render(java.lang.Runnable)
      • getAccessibleContext

        @BeanProperty(bound=false)
        public AccessibleContext getAccessibleContext​()
        获取AccessibleContext与此JTextComponent相关联。 对于文本组件,该AccessibleContext需要一个形式AccessibleJTextComponent 如有必要,将创建一个新的AccessibleJTextComponent实例。
        Specified by:
        getAccessibleContext在接口 Accessible
        重写:
        getAccessibleContextComponent
        结果
        一个 AccessibleJTextComponent ,作为这个 AccessibleContextJTextComponent
      • paramString

        protected String paramString​()
        返回此JTextComponent的字符串表示JTextComponent 该方法仅用于调试目的,并且返回的字符串的内容和格式可能因实现而异。 返回的字符串可能为空,但可能不是null

        覆盖paramString以提供有关JFC组件特定新方面的信息。

        重写:
        paramStringJComponent
        结果
        这个 JTextComponent的字符串表示 JTextComponent
      • saveComposedText

        protected boolean saveComposedText​(int pos)
        将文字保存在指定的位置周围。 指定位置周围的合成文本(如果有)保存在后备存储中,并从文档中删除。
        参数
        pos - 用于标识组合文本位置的文档位置
        结果
        true如果撰写文本存在并保存, false否则
        从以下版本开始:
        1.7
        另请参见:
        restoreComposedText()
      • restoreComposedText

        protected void restoreComposedText​()
        恢复以前由saveComposedText保存的组合文本。 保存的组合文本将被插入到文档中。 只有当saveComposedText返回true才能调用此方法。
        从以下版本开始:
        1.7
        另请参见:
        saveComposedText(int)