模块 java.desktop

类 JTextComponent

所有已实现的接口:
ImageObserver , MenuContainer , Serializable , Accessible , Scrollable
已知子类:
JEditorPane , JTextArea , JTextField

@JavaBean (defaultProperty ="UI") public abstract class JTextComponent extends JComponent implements Scrollable , Accessible
JTextComponent 是 swing 文本组件的基类。它试图与 java.awt.TextComponent 类兼容,它可以合理地做到这一点。还提供了其他服务以提供额外的灵活性(除了可插入的 UI 和 bean 支持之外)。您可以在 使用文本组件的一般规则 中找到有关如何使用此类提供的功能的信息,这是 The Java Tutorial. 中的一个部分
插入符更改
插入符号是 swing 文本组件中的可插入对象。插入符号位置和选择的更改通知将发送到已在文本组件中注册的CaretListener接口的实现。除非已设置自定义插入符号,否则 UI 将安装默认插入符号。
默认情况下,插入符号跟踪在事件调度线程上执行的所有文档更改,如果插入发生在插入符号位置之前或位置,或者删除发生在插入符号位置之前,则相应地更新它的位置。 DefaultCaret 试图使自己可见,这可能导致 JScrollPane 中的文本组件滚动。 DefaultCaret.setUpdatePolicy(int) 方法可以更改默认插入符号行为。
笔记:不可编辑的文本组件也有一个插入符号,但它可能不会被绘制。
命令
文本组件提供了许多可用于操作组件的命令。这本质上是组件表达其功能的方式。这些是根据 swing Action 接口表达的,使用 TextAction 实现。可以使用 getActions() 方法找到文本组件支持的命令集。这些动作可以绑定到按键事件,从按钮触发等。
文本输入
文本组件支持灵活和国际化的文本输入,使用keymap和输入方法框架,同时保持与 AWT 监听模型的兼容性。

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

输入法框架 允许文本组件与输入法交互,分离预处理事件的软件组件,让用户使用更少的键盘输入数千个不同的字符。 JTextComponent 是框架的 active client,因此它实现了与输入法交互的首选用户界面。因此,某些键事件不会到达文本组件,因为它们由输入法处理,并且某些文本输入会作为 InputMethodEvent 中的提交文本而不是键事件到达文本组件。完整的文本输入是keyTyped按键事件中的字符和输入法事件中提交的文本的组合。

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

键盘事件和输入方法事件在以下阶段处理,每个阶段都能够消费事件:

键盘和输入方法事件处理的阶段
阶段 KeyEvent InputMethodEvent
1. 输入方法 (在这里生成)
2. 焦点经理
3. 注册的关键听众 注册输入方法监听
4. JTextComponent 中的输入方法处理
5. 使用当前keymap处理keymap
6. JComponent 中的键盘处理(例如加速器、组件导航等)

为了保持与监听按键事件但不知道输入方法事件的应用程序的兼容性,第 4 阶段的输入方法处理为不处理输入方法事件的组件提供了一种兼容模式。对于这些组件,提交的文本将转换为 keyTyped 键事件,并在从第 3 阶段开始的键事件管道中处理,而不是在输入方法事件管道中处理。

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

  • 将内容插入到可打印键的编辑器中。
  • 使用退格键和 del 键删除内容。
  • 插入符号向前和向后移动
模型/视图拆分
文本组件具有模型视图拆分。文本组件将用于表示模型、视图和控制器的对象组合在一起。文本文档模型可以被充当模型观察者的其他视图共享(例如,一个文档可以被多个组件共享)。

Diagram showing interaction between Controller, Document, events, and 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) 方法。

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

参见:
  • 字段详细信息

    • FOCUS_ACCELERATOR_KEY

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

      public static final String  DEFAULT_KEYMAP
      所有 JTextComponent 实例将共享的默认keymap,除非它们设置了不同的keymap。
      参见:
  • 构造方法详细信息

    • JTextComponent

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

    • getUI

      public TextUI  getUI()
      获取此面向文本的编辑器的用户界面工厂。
      重写:
      getUI 在类 JComponent
      返回:
      工厂
    • setUI

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

      public void updateUI()
      重新加载可插入 UI。用于获取新接口的密钥是 getUIClassID() 。 UI 的类型是 TextUIinvalidate 在设置 UI 后调用。
      重写:
      updateUI 在类 JComponent
      参见:
    • addCaretListener

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

      public void removeCaretListener(CaretListener  listener)
      删除插入符监听。
      参数:
      listener - 要删除的监听器
      参见:
    • getCaretListeners

      @BeanProperty (bound =false) public CaretListener [] getCaretListeners()
      返回在此文本组件上注册的所有插入符号监听的数组。
      返回:
      该组件的所有 CaretListener 或一个空数组(如果当前没有注册插入符监听器)
      自从:
      1.4
      参见:
    • fireCaretUpdate

      protected void fireCaretUpdate(CaretEvent  e)
      通知所有已注册对此事件类型的通知感兴趣的监听。事件实例是使用传递给 fire 方法的参数延迟创建的。监听列表以从后到先的方式处理。
      参数:
      e - 事件
      参见:
    • setDocument

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

      public Document  getDocument()
      获取与编辑器关联的模型。这主要是为了使 UI 达到成为文本编辑器所需的最少状态。子类将返回模型的实际类型,通常是扩展 Document 的东西。
      返回:
      该模型
    • getActions

      @BeanProperty (bound =false) public Action [] getActions()
      获取编辑器的命令列表。这是由编辑器本身支持的命令集合扩充的插件 UI 支持的命令列表。这些对于绑定到事件很有用,例如在键盘map中。
      返回:
      命令列表
    • setMargin

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

      public Insets  getMargin()
      返回文本组件的边框与其文本之间的边距。
      返回:
      保证金
    • setNavigationFilter

      public void setNavigationFilter(NavigationFilter  filter)
      设置 NavigationFilterNavigationFilterDefaultCaret 和默认光标移动操作用作限制光标移动的方式。
      参数:
      filter - 过滤器
      自从:
      1.4
    • getNavigationFilter

      public NavigationFilter  getNavigationFilter()
      返回 NavigationFilterNavigationFilterDefaultCaret 和默认光标移动操作用作限制光标移动的方式。空返回值意味着不应限制光标移动和选择。
      返回:
      导航过滤器
      自从:
      1.4
    • getCaret

      public Caret  getCaret()
      获取允许在视图上进行面向文本的导航的插入符号。
      返回:
      插入符号
    • setCaret

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

      public Highlighter  getHighlighter()
      获取负责制作高光的对象。
      返回:
      荧光笔
    • setHighlighter

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

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

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

      遵守此属性并识别用户拖动手势的工作取决于外观实现,尤其是组件的 TextUI 。启用自动拖动处理后,只要用户在选择上按下鼠标按钮然后将鼠标移动几个像素,大多数外观(包括子类 BasicLookAndFeel 的外观和感觉)都会开始拖放操作。因此,将此属性设置为 true 会对选择的行为方式产生微妙的影响。

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

      参数:
      b - 是否启用自动拖动处理
      抛出:
      HeadlessException - 如果 btrue 并且 GraphicsEnvironment.isHeadless() 返回 true
      自从:
      1.4
      参见:
    • getDragEnabled

      public boolean getDragEnabled()
      返回是否启用自动拖动处理。
      返回:
      dragEnabled 属性的值
      自从:
      1.4
      参见:
    • 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

      public final DropMode  getDropMode()
      返回此组件的放置模式。
      返回:
      该组件的放置模式
      自从:
      1.6
      参见:
    • getDropLocation

      @BeanProperty (bound =false) public final JTextComponent.DropLocation  getDropLocation()
      返回此组件在组件上的 DnD 操作期间应直观指示为放置位置的位置,如果当前没有要显示的位置,则返回 null

      此方法不适用于从 TransferHandler 查询放置位置,因为放置位置仅在 TransferHandlercanImport 返回并允许显示位置后设置。

      当此属性更改时,组件将触发名为“dropLocation”的属性更改事件。

      返回:
      下降位置
      自从:
      1.6
      参见:
    • getKeymap

      public Keymap  getKeymap()
      获取当前在此文本组件中处于活动状态的keymap。
      返回:
      keymap
    • addKeymap

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

      public static Keymap  removeKeymap(String  nm)
      删除以前添加到文档中的命名keymap。具有 null 名称的keymap可能无法以这种方式删除。
      参数:
      nm - 要删除的keymap的名称
      返回:
      删除的键映射
    • getKeymap

      public static Keymap  getKeymap(String  nm)
      获取先前添加到文档中的命名键映射。这不适用于 null 命名的keymap。
      参数:
      nm - keymap的名称
      返回:
      keymap
    • loadKeymap

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

      加载带有一堆绑定的keymap。这可用于获取静态定义表并将它们加载到某个键map中。以下示例说明了将某些键绑定到与 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 - keymap
      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 - 颜色
      参见:
    • 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 - 颜色
      参见:
    • 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 - 颜色
      参见:
    • getDisabledTextColor

      public Color  getDisabledTextColor()
      获取用于呈现禁用文本的当前颜色。
      返回:
      颜色
    • setDisabledTextColor

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

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

      这是操作的默认实现使用的方法,用于插入绑定到键map操作的内容。

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

      public String  getText(int offs, int len) throws BadLocationException
      获取组件表示的文本的一部分。如果长度为 0,则返回空字符串。
      参数:
      offs - 偏移量≥ 0
      len - 长度≥ 0
      返回:
      文本
      抛出:
      BadLocationException - 如果偏移量或长度无效
    • modelToView

      @Deprecated (since ="9") public Rectangle  modelToView(int pos) throws BadLocationException
      已弃用。
      将模型中的给定位置转换为视图坐标系中的位置。组件必须具有正尺寸才能计算此平移(即在组件尺寸确定之前无法计算布局)。该组件不必是可见的或绘制的。
      参数:
      pos - 位置 ≥ 0
      返回:
      作为矩形的坐标,使用 (rx, ry) 作为坐标系中的位置,如果组件还没有正尺寸,则为 null。
      抛出:
      BadLocationException - 如果给定位置不代表相关文档中的有效位置
      参见:
    • modelToView2D

      public Rectangle2D  modelToView2D(int pos) throws BadLocationException
      将模型中的给定位置转换为视图坐标系中的位置。组件必须具有正尺寸才能计算此平移(即在组件尺寸确定之前无法计算布局)。该组件不必是可见的或绘制的。
      参数:
      pos - 位置 >= 0
      返回:
      作为矩形的坐标,使用 (rx, ry) 作为坐标系中的位置,如果组件还没有正尺寸,则为 null。
      抛出:
      BadLocationException - 如果给定位置不代表相关文档中的有效位置
      自从:
      9
      参见:
    • viewToModel

      @Deprecated (since ="9") public int viewToModel(Point  pt)
      已弃用。
      将视图坐标系中的给定位置转换为模型中最近的代表性位置。组件必须具有正尺寸才能计算此平移(即在组件尺寸确定之前无法计算布局)。该组件不必是可见的或绘制的。
      参数:
      pt - 视图中要翻译的位置
      返回:
      从文档开始的偏移量 ≥ 0,如果组件还没有正大小,则为 -1。
      参见:
    • viewToModel2D

      public int viewToModel2D(Point2D  pt)
      将视图坐标系中的给定位置转换为模型中最近的代表性位置。组件必须具有正尺寸才能计算此平移(即在组件尺寸确定之前无法计算布局)。该组件不必是可见的或绘制的。
      参数:
      pt - 视图中要翻译的位置
      返回:
      文档开头的偏移量 >= 0,如果组件还没有正大小,则为 -1
      自从:
      9
      参见:
    • cut

      public void cut()
      将关联文本模型中的当前选定范围传输到系统剪贴板,从模型中删除内容。当前选择被重置。对 null 选择不做任何事情。
      参见:
    • copy

      public void copy()
      将关联文本模型中的当前选定范围传输到系统剪贴板,将内容保留在文本模型中。当前选择保持不变。对 null 选择不做任何事情。
      参见:
    • paste

      public void paste()
      将系统剪贴板的内容传输到关联的文本模型中。如果关联视图中有一个选择,它将被剪贴板的内容替换。如果没有选择,剪贴板内容将插入到关联视图中当前插入位置的前面。如果剪贴板是空的,什么都不做。
      参见:
    • moveCaretPosition

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

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

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

      public void read(Reader  in, Object  desc) throws IOException
      从流初始化。这将创建一个适合组件类型的模型,并从流中初始化模型。默认情况下,这会将模型加载为纯文本。模型的先前内容将被丢弃。
      参数:
      in - 要读取的流
      desc - 描述流的对象;这可能是一个字符串、一个文件、一个 URL 等。某些类型的文档(例如 html)可能能够利用此信息;如果非 null ,则将其添加为文档的属性
      抛出:
      IOException - 由用于初始化的流抛出
      参见:
    • 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 设置文本插入符号的位置。请注意,插入符号轨道会发生变化,因此如果组件的基础文本发生变化,它可能会移动。如果文档是 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

      public String  getText()
      返回此 TextComponent 中包含的文本。如果底层文档是 null ,将给出一个 NullPointerException 。请注意,文本不是绑定属性,因此在更改时不会触发 PropertyChangeEvent 。要监听文本的更改,请使用 DocumentListener
      返回:
      文本
      抛出:
      NullPointerException - 如果文档是 null
      参见:
    • getSelectedText

      @BeanProperty (bound =false) public String  getSelectedText()
      返回此 TextComponent 中包含的选定文本。如果选择是 null 或文档为空,则返回 null
      返回:
      文本
      抛出:
      IllegalArgumentException - 如果选择由于某种原因没有有效映射到文档
      参见:
    • isEditable

      public boolean isEditable()
      返回指示此 TextComponent 是否可编辑的boolean。
      返回:
      boolean
      参见:
    • setEditable

      @BeanProperty (description ="specifies if the text can be edited") public void setEditable(boolean b)
      设置指定的boolean以指示此 TextComponent 是否应可编辑。状态更改时会触发 PropertyChange 事件(“可编辑”)。
      参数:
      b - 要设置的boolean
      参见:
    • 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,如果没有选择则返回 dot 的值。
      返回:
      结束位置≥0
    • setSelectionEnd

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

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

      参数:
      selectionEnd - 文本的结束位置 ≥ 0
    • select

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

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

      如果调用者提供不一致或越界的值,该方法会以静默方式强制执行这些约束,不会失败。具体来说,如果开始位置或结束位置大于文本长度,则将其重置为等于文本长度。如果起始位置小于零,则重置为零,如果结束位置小于起始位置,则重置为起始位置。

      提供此调用是为了向后兼容。它被路由到对 setCaretPosition 的调用,然后是对 moveCaretPosition 的调用。管理选择的首选方法是直接调用这些方法。

      参数:
      selectionStart - 文本的起始位置
      selectionEnd - 文本的结束位置
      参见:
    • selectAll

      public void selectAll()
      选择 TextComponent 中的所有文本。对 null 或空文档不执行任何操作。
    • getToolTipText

      public String  getToolTipText(MouseEvent  event)
      返回用作 event 的工具提示的字符串。这将返回以下之一:
      1. 如果 setToolTipText 已使用非 null 值调用,它将被返回,否则
      2. 将返回在 UI 上调用 getToolTipText 的值。
      默认情况下,JTextComponent 不会向 ToolTipManager 注册自己。这意味着除非在 ToolTipManager 上调用了 registerComponent,否则不会从 TextUI 显示工具提示。
      重写:
      getToolTipText 在类 JComponent
      参数:
      event - 有问题的事件
      返回:
      用作 event 工具提示的字符串
      参见:
    • getPreferredScrollableViewportSize

      @BeanProperty (bound =false) public Dimension  getPreferredScrollableViewportSize()
      返回视图组件视口的首选大小。这是为了执行返回组件首选大小的默认行为。
      指定者:
      getPreferredScrollableViewportSize 在接口 Scrollable
      返回:
      JViewportpreferredSize 其视图是这个 Scrollable
      参见:
    • getScrollableUnitIncrement

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

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

      指定者:
      getScrollableUnitIncrement 在接口 Scrollable
      参数:
      visibleRect - 视口内可见的视图区域
      orientation - SwingConstants.VERTICALSwingConstants.HORIZONTAL
      direction - 小于零向上/向左滚动,大于零向下/向右滚动
      返回:
      在指定方向滚动的“单位”增量
      抛出:
      IllegalArgumentException - 方向无效
      参见:
    • getScrollableBlockIncrement

      public int getScrollableBlockIncrement(Rectangle  visibleRect, int orientation, int direction)
      根据 orientation 的值计算将完全显示一个行或列块的滚动增量。

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

      指定者:
      getScrollableBlockIncrement 在接口 Scrollable
      参数:
      visibleRect - 视口内可见的视图区域
      orientation - SwingConstants.VERTICALSwingConstants.HORIZONTAL
      direction - 小于零向上/向左滚动,大于零向下/向右滚动
      返回:
      在指定方向滚动的“块”增量
      抛出:
      IllegalArgumentException - 方向无效
      参见:
    • getScrollableTracksViewportWidth

      @BeanProperty (bound =false) public boolean getScrollableTracksViewportWidth()
      如果视口应始终强制此 Scrollable 的宽度与视口的宽度匹配,则返回 true。例如,支持换行的普通文本视图将在此处返回 true,因为换行在视口右边缘之外消失是不可取的。请注意,为祖先为 JScrollPaneScrollable 返回 true 会有效地禁用水平滚动。

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

      指定者:
      getScrollableTracksViewportWidth 在接口 Scrollable
      返回:
      如果视口应强制 Scrollable 的宽度与其自身的宽度匹配,则为真
    • getScrollableTracksViewportHeight

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

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

      指定者:
      getScrollableTracksViewportHeight 在接口 Scrollable
      返回:
      如果视口应该强制 Scrollables 高度匹配它自己的高度,则为 true
    • print

      public boolean print() throws PrinterException
      显示打印对话框的便捷打印方法,然后在中打印此JTextComponent交互的没有页眉或页脚文本的模式。注意:此方法会阻塞,直到打印完成。

      注:在无头模式,将不会显示任何对话框。

      此方法调用功能齐全的 print 方法来执行打印。

      返回:
      true ,除非打印被用户取消
      抛出:
      PrinterException - 如果打印系统中的错误导致作业中止
      SecurityException - 如果不允许此线程发起打印作业请求
      自从:
      1.6
      参见:
    • print

      public boolean print(MessageFormat  headerFormat, MessageFormat  footerFormat) throws PrinterException
      显示打印对话框的便捷打印方法,然后在中打印此JTextComponent交互的带有指定页眉和页脚文本的模式。注意:此方法会阻塞,直到打印完成。

      注:在无头模式,将不会显示任何对话框。

      此方法调用功能齐全的 print 方法来执行打印。

      参数:
      headerFormat - MessageFormat 中用作标题的文本,或 null 无标题
      footerFormat - MessageFormat 中用作页脚的文本,或 null 无页脚
      返回:
      true ,除非打印被用户取消
      抛出:
      PrinterException - 如果打印系统中的错误导致作业中止
      SecurityException - 如果不允许此线程发起打印作业请求
      自从:
      1.6
      参见:
    • 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 falseall事件,包括重绘,从处理到打印完成。仅在从没有可见 GUI 的应用程序打印时才推荐使用。

      注:在无头模式、showPrintDialoginteractive 参数将被忽略,并且不会显示任何对话框。

      此方法可确保 document 在打印期间不会发生突变。为了直观地指示它,在打印期间设置setEnabled(false)

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

      此方法是线程安全的,尽管大多数 Swing 方法不是。请参阅 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 或默认值 null
      attributes - 要应用于打印作业的作业属性,或 null
      interactive - 是否以交互模式打印
      返回:
      true ,除非打印被用户取消
      抛出:
      PrinterException - 如果打印系统中的错误导致作业中止
      SecurityException - 如果不允许此线程发起打印作业请求
      自从:
      1.6
      参见:
    • getPrintable

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

      返回的 Printable 与此 JTextComponent 共享 document。开发人员有责任确保在使用此 Printabledocument 不发生突变。当 document 在打印期间发生突变时,打印行为未定义。

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

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

      此方法是线程安全的,尽管大多数 Swing 方法不是。请参阅 Swing 中的并发 了解更多信息。

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

      此实现返回 Printable 执行所有绘画事件派发线程,不管它用在什么线程上。

      参数:
      headerFormat - MessageFormat 中用作标题的文本,或 null 无标题
      footerFormat - MessageFormat 中用作页脚的文本,或 null 无页脚
      返回:
      Printable 用于打印此 JTextComponent 的内容
      自从:
      1.6
      参见:
    • getAccessibleContext

      @BeanProperty (bound =false) public AccessibleContext  getAccessibleContext()
      获取与此 JTextComponent 关联的 AccessibleContext。对于文本组件,AccessibleContext 采用 AccessibleJTextComponent 的形式。如有必要,将创建一个新的 AccessibleJTextComponent 实例。
      指定者:
      getAccessibleContext 在接口 Accessible
      重写:
      getAccessibleContext 在类 Component
      返回:
      一个 AccessibleJTextComponent 作为这个 JTextComponentAccessibleContext
    • paramString

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

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

      重写:
      paramString 在类 JComponent
      返回:
      这个 JTextComponent 的字符串表示
    • getInputMethodRequests

      @BeanProperty (bound =false) public InputMethodRequests  getInputMethodRequests()
      从类复制的描述:Component
      获取输入法请求处理程序,该处理程序支持来自此组件的输入法请求。支持现场文本输入的组件必须覆盖此方法以返回一个InputMethodRequests实例。同时,它还要处理输入法事件。
      重写:
      getInputMethodRequests 在类 Component
      返回:
      该组件的输入法请求处理程序,默认为null
      参见:
    • saveComposedText

      protected boolean saveComposedText(int pos)
      在指定位置周围保存组合文本。指定位置周围的组合文本(如果有)将保存在后备存储中并从文档中删除。
      参数:
      pos - 用于识别组合文本位置的文档位置
      返回:
      true 如果组合文本存在并保存,false 否则
      自从:
      1.7
      参见:
    • restoreComposedText

      protected void restoreComposedText()
      恢复以前由 saveComposedText 保存的组合文本。保存的组合文本被插入回文档中。仅当 saveComposedText 返回 true 时才应调用此方法。
      自从:
      1.7
      参见: