Module java.desktop
Package javax.swing.text

Class 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()方法找到。这些操作可以绑定到键事件,从按钮触发等。
文本输入
文本组件支持灵活和国际化的文本输入,使用键映射和输入法框架,同时保持与AWT监听器模型的兼容性。

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

输入法框架允许文本组件与输入法交互,这是一种预处理事件的独立软件组件,使用户可以使用键盘输入成千上万个不同字符,而键盘上只有很少的键。 JTextComponent是框架的主动客户端,因此它实现了与输入法交互的首选用户界面。因此,一些键事件不会到达文本组件,因为它们由输入法处理,而一些文本输入将作为InputMethodEvent中的已提交文本而不是作为键事件到达文本组件。完整的文本输入是keyTyped键事件中的字符和输入法事件中已提交文本的组合。

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

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

键盘和输入法事件处理阶段
阶段 KeyEvent InputMethodEvent
1. 输入法 (在此生成)
2. 焦点管理器
3. 已注册的键监听器 已注册的输入法监听器
4. 在JTextComponent中处理输入法
5. 使用当前键映射处理键映射
6. JComponent中的键盘处理(例如加速键,组件导航等)

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

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

  • 使用可打印键将内容插入编辑器。
  • 使用退格键和删除键删除内容。
  • 插入符向前和向后移动
模型/视图分离
文本组件具有模型-视图分离。文本组件汇集了用于表示模型、视图和控制器的对象。文本文档模型可以由其他作为模型观察者的视图共享(例如,一个文档可以由多个组件共享)。

显示控制器、文档、事件和ViewFactory之间交互的图表

模型由Document接口定义。这旨在提供一种灵活的文本存储机制,跟踪编辑期间的更改,并可以扩展为更复杂的模型。模型接口旨在捕获由SGML提供的表达能力,SGML是一种用于表达各种内容的系统。对文档的每次修改都会导致将更改的详细信息通知发送给所有观察者,形式为DocumentEvent,这允许视图与模型保持同步。此事件发送给已实现DocumentListener接口并向观察的模型注册兴趣的观察者。

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

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

参见:
  • Field Details

    • FOCUS_ACCELERATOR_KEY

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

      public static final String DEFAULT_KEYMAP
      默认的键映射,除非已设置不同的键映射,否则将由所有JTextComponent实例共享。
      参见:
  • Constructor Details

    • JTextComponent

      public JTextComponent()
      创建一个新的JTextComponent。建立插入符事件的监听器,并安装可插拔UI。将组件标记为可编辑。不使用布局管理器,因为布局由文本的视图子系统管理。文档模型设置为null
  • Method Details

    • getUI

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

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

      public void updateUI()
      重新加载可插拔UI。用于获取新接口的键是getUIClassID()。UI的类型是TextUI。设置UI后调用invalidate
      覆盖:
      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事件("document")。
      参数:
      doc - 要显示/编辑的文档
      参见:
    • getDocument

      public Document getDocument()
      获取与编辑器关联的模型。这主要是为了UI获取所需的最小状态量以成为文本编辑器。子类将返回实际类型的模型,通常是扩展Document的内容。
      返回:
      模型
    • 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)
      设置NavigationFilterNavigationFilterDefaultCaret和默认光标移动操作使用,作为限制光标移动的一种方式。
      参数:
      filter - 过滤器
      自:
      1.4
    • getNavigationFilter

      public NavigationFilter getNavigationFilter()
      返回NavigationFilterNavigationFilterDefaultCaret和默认光标移动操作使用,作为限制光标移动的一种方式。返回null值意味着应禁止光标移动和选择。
      返回:
      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 - 插入符号
      参见:
    • getHighlighter

      public Highlighter getHighlighter()
      获取负责进行高亮显示的对象。
      返回:
      高亮器
    • setHighlighter

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

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

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

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

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

      参数:
      b - 是否启用自动拖动处理
      抛出:
      HeadlessException - 如果btrueGraphicsEnvironment.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()
      获取当前在此文本组件中活动的键位映射。
      返回:
      键位映射
    • 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)

      加载具有一堆绑定的键位映射。这可用于将一组静态定义的绑定加载到某个键位映射中。以下示例说明了将一些键绑定到与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实际上是恢复默认颜色。设置颜色会触发一个属性更改事件("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。设置颜色会触发一个属性更改事件("selectionColor")。
      参数:
      c - 颜色
      另请参阅:
    • getSelectedTextColor

      public Color getSelectedTextColor()
      获取用于呈现所选文本的当前颜色。
      返回:
      颜色
    • setSelectedTextColor

      @BeanProperty(preferred=true, description="color used to render selected text") public void setSelectedTextColor(Color c)
      设置用于呈现所选文本的当前颜色。将颜色设置为null等同于Color.black。设置颜色会触发一个属性更改事件("selectedTextColor")。
      参数:
      c - 颜色
      另请参阅:
    • getDisabledTextColor

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

      @BeanProperty(preferred=true, description="color used to render disabled text") public void setDisabledTextColor(Color c)
      设置用于呈现禁用文本的当前颜色。设置颜色会触发一个属性更改事件("disabledTextColor")。
      参数:
      c - 颜色
      另请参阅:
    • replaceSelection

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

      这是默认实现的用于插入内容的操作的方法,该操作绑定到键位映射操作。

      参数:
      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
      Deprecated.
      replaced by modelToView2D(int)
      将模型中给定位置转换为视图坐标系中的位置。必须为此转换计算正大小的组件(即,在组件调整大小之前无法计算布局)。组件不必可见或已绘制。
      参数:
      pos - 位置≥ 0
      返回:
      作为矩形的坐标,其中(r.x,r.y)是坐标系中的位置,如果组件尚未具有正大小,则返回null
      抛出:
      BadLocationException - 如果给定位置不表示关联文档中的有效位置
      另请参阅:
    • modelToView2D

      public Rectangle2D modelToView2D(int pos) throws BadLocationException
      将模型中给定位置转换为视图坐标系中的位置。必须为此转换计算正大小的组件(即,在组件调整大小之前无法计算布局)。组件不必可见或已绘制。
      参数:
      pos - 位置>= 0
      返回:
      作为矩形的坐标,其中(r.x,r.y)是坐标系中的位置,如果组件尚未具有正大小,则返回null
      抛出:
      BadLocationException - 如果给定位置不表示关联文档中的有效位置
      自从:
      9
      另请参阅:
    • viewToModel

      @Deprecated(since="9") public int viewToModel(Point pt)
      Deprecated.
      将视图坐标系中给定位置转换为模型中最近的代表位置。必须为此转换计算正大小的组件(即,在组件调整大小之前无法计算布局)。组件不必可见或已绘制。
      参数:
      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)
      设置将导致接收文本组件获得焦点的键加速器。加速器将是平台特定修改键和给定字符的组合(转换为大写)。例如,在Windows上使用ALT键作为修改键,在Mac上使用CTRL+ALT组合键。默认情况下,没有焦点加速键。任何先前的键加速器设置将被取代。'\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是否可编辑的布尔值。
      返回:
      布尔值
      参见:
    • setEditable

      @BeanProperty(description="specifies if the text can be edited") public void setEditable(boolean b)
      设置指定的布尔值以指示此TextComponent是否应可编辑。当状态更改时,将触发PropertyChange事件("editable")。
      参数:
      b - 要设置的布尔值
      参见:
    • 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 - 文本的结束位置 ≥ 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. 如果使用非null值调用了setToolTipText,则将返回该值,否则
      2. 将返回在UI上调用getToolTipText的值。
      默认情况下,JTextComponent不会向ToolTipManager注册自身。这意味着除非在ToolTipManager上调用了registerComponent,否则不会从TextUI显示工具提示。
      覆盖:
      getToolTipText 在类 JComponent
      参数:
      event - 相关事件
      返回:
      要用作event工具提示的字符串
      另请参阅:
    • getPreferredScrollableViewportSize

      @BeanProperty(bound=false) public Dimension getPreferredScrollableViewportSize()
      返回视图组件的视口的首选大小。这是实现默认行为的方法,返回组件的首选大小。
      指定:
      getPreferredScrollableViewportSize 在接口 Scrollable
      返回:
      Scrollable的视图是JViewport的首选大小
      另请参阅:
    • getScrollableUnitIncrement

      public int getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction)
      显示逻辑行或列的组件应计算滚动增量,以完全显示一个新行或列,具体取决于方向的值。理想情况下,组件应通过返回完全显示该项所需的距离来处理部分显示的行或列。

      此默认实现只是返回可见区域的10%。子类可能能够提供一个更合理的值。

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

      public int getScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction)
      显示逻辑行或列的组件应计算滚动增量,以完全显示一个块的行或列,具体取决于方向的值。

      此默认实现只是返回可见区域。子类可能能够提供一个更合理的值。

      指定:
      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的宽度与其自身匹配,则返回true
    • getScrollableTracksViewportHeight

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

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

      指定:
      getScrollableTracksViewportHeight 在接口 Scrollable
      返回:
      如果视口应强制Scrollable的高度与其自身匹配,则返回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 false会阻止处理所有事件,包括重绘,直到打印完成。仅建议在从没有可见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。开发人员有责任确保在使用此Printable时不会更改document。当在打印过程中更改document时,打印行为是不确定的。

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

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

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

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

      此实现返回的Printable会在事件分派线程上执行所有绘制,无论在哪个线程上使用它。

      参数:
      headerFormat - 用作页眉的文本,使用MessageFormat格式,或者为null表示无页眉
      footerFormat - 用作页脚的文本,使用MessageFormat格式,或者为null表示无页脚
      返回:
      用于打印此JTextComponent内容的Printable
      自版本:
      1.6
      参见:
    • getAccessibleContext

      @BeanProperty(bound=false) public AccessibleContext getAccessibleContext()
      获取与此JTextComponent关联的AccessibleContext。对于文本组件,AccessibleContext采用AccessibleJTextComponent的形式。如果需要,将创建一个新的AccessibleJTextComponent实例。
      指定者:
      getAccessibleContext 在接口 Accessible
      覆盖:
      getAccessibleContext 在类 Component
      返回:
      作为此JTextComponentAccessibleContextAccessibleJTextComponent
    • 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
      参见: