Module java.desktop
Package javax.swing

Class JTextArea

所有已实现的接口:
ImageObserver, MenuContainer, Serializable, Accessible, Scrollable

@JavaBean(defaultProperty="UIClassID", description="A multi-line area that displays plain text.") public class JTextArea extends JTextComponent
JTextArea是一个显示纯文本的多行区域。它旨在是一个轻量级组件,可以在可以合理做到的情况下提供与java.awt.TextArea类的源兼容性。您可以在使用文本组件中找到有关所有文本组件的信息和示例,这是Java教程中的一个部分。

这个组件具有java.awt.TextArea类中找不到的功能。应该查阅超类以获取额外的功能。具有更多功能的替代多行文本类包括JTextPaneJEditorPane

java.awt.TextArea在内部处理滚动。JTextArea不同之处在于它不管理滚动,而是实现了swing的Scrollable接口。这使得如果需要滚动行为,则可以将其放置在JScrollPane中,并且如果不需要滚动,则可以直接使用它。

java.awt.TextArea具有执行换行的能力。这是由水平滚动策略控制的。由于JTextArea不直接执行滚动,因此必须以另一种方式提供向后兼容性。 JTextArea具有用于控制是否换行的绑定属性。默认情况下,换行属性设置为false(不换行)。

java.awt.TextArea有两个属性rowscolumns,用于确定首选大小。当将JTextArea放置在JScrollPane中以匹配java.awt.TextArea提供的功能时,JTextArea使用这些属性来指示视口的首选大小。 JTextArea的首选大小是显示所有文本所需的大小,以便在JScrollPane内部正常工作。如果rowscolumns的值等于零,则沿着该轴的首选大小用于视口沿着相同轴的首选大小。

java.awt.TextArea可以通过为TextEvent添加TextListener来监视更改。在基于JTextComponent的组件中,更改是通过从模型通过DocumentEventDocumentListeners广播的。如果需要,DocumentEvent会提供更改的位置和更改的类型。代码片段可能如下所示:

    DocumentListener myListener = ??;
    JTextArea myArea = ??;
    myArea.getDocument().addDocumentListener(myListener);
 
换行符
有关如何处理换行符的讨论,请参见DefaultEditorKit

警告: Swing不是线程安全的。有关更多信息,请参见Swing的线程策略

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

自从:
1.2
参见:
  • Constructor Details

    • JTextArea

      public JTextArea()
      构造一个新的TextArea。设置默认模型,初始字符串为null,行/列设置为0。
    • JTextArea

      public JTextArea(String text)
      构造一个显示指定文本的新的空TextArea。创建默认模型,行/列设置为0。
      参数:
      text - 要显示的文本,或null
    • JTextArea

      public JTextArea(int rows, int columns)
      构造一个具有指定行数和列数的新的空TextArea。创建默认模型,初始字符串为null。
      参数:
      rows - 行数 >= 0
      columns - 列数 >= 0
      抛出:
      IllegalArgumentException - 如果行数或列数参数为负数。
    • JTextArea

      public JTextArea(String text, int rows, int columns)
      构造一个显示指定文本和行数以及列数的新的TextArea。创建默认模型。
      参数:
      text - 要显示的文本,或null
      rows - 行数 >= 0
      columns - 列数 >= 0
      抛出:
      IllegalArgumentException - 如果行数或列数参数为负数。
    • JTextArea

      public JTextArea(Document doc)
      使用给定的文档模型构造一个新的JTextArea,并为所有其他参数(null、0、0)设置默认值。
      参数:
      doc - 要使用的模型
    • JTextArea

      public JTextArea(Document doc, String text, int rows, int columns)
      使用指定的行数和列数以及给定的模型构造一个新的JTextArea。所有构造函数都通过这个构造函数。
      参数:
      doc - 要使用的模型,如果为null则创建一个默认模型
      text - 要显示的文本,如果没有则为null
      rows - 行数 >= 0
      columns - 列数 >= 0
      抛出:
      IllegalArgumentException - 如果行数或列数参数为负数。
  • Method Details

    • getUIClassID

      @BeanProperty(bound=false) public String getUIClassID()
      返回UI的类ID。
      覆盖:
      getUIClassID 在类 JComponent
      返回:
      字符串"TextAreaUI"
      参见:
    • createDefaultModel

      protected Document createDefaultModel()
      创建要在构造时使用的模型的默认实现。返回一个新的PlainDocument实例。
      返回:
      默认文档模型
    • setTabSize

      @BeanProperty(preferred=true, description="the number of characters to expand tabs to") public void setTabSize(int size)
      设置要扩展制表符的字符数。这将乘以可变宽度字体的最大前进。当制表符大小更改时,将触发PropertyChange事件("tabSize")。
      参数:
      size - 要扩展到的字符数
      参见:
    • getTabSize

      public int getTabSize()
      获取用于扩展制表符的字符数。如果文档为null或没有制表符设置,则返回默认值8。
      返回:
      字符数
    • setLineWrap

      @BeanProperty(preferred=true, description="should lines be wrapped") public void setLineWrap(boolean wrap)
      设置文本区域的换行策略。如果设置为true,则如果行太长而无法适应分配的宽度,则将换行。如果设置为false,则行将始终不换行。在更改策略时会触发PropertyChange事件("lineWrap")。默认情况下,此属性为false。
      参数:
      wrap - 指示是否应换行
      参见:
    • getLineWrap

      public boolean getLineWrap()
      获取文本区域的换行策略。如果设置为true,则如果行太长而无法适应分配的宽度,则将换行。如果设置为false,则行将始终不换行。
      返回:
      如果行将换行
    • setWrapStyleWord

      @BeanProperty(description="should wrapping occur at word boundaries") public void setWrapStyleWord(boolean word)
      设置文本区域在换行时使用的换行样式。如果设置为true,则如果行太长而无法适应分配的宽度,则将在单词边界(空格)处换行。如果设置为false,则行将在字符边界处换行。默认情况下,此属性为false。
      参数:
      word - 指示是否应使用单词边界进行换行
      参见:
    • getWrapStyleWord

      public boolean getWrapStyleWord()
      获取文本区域在换行时使用的换行样式。如果设置为true,则如果行太长而无法适应分配的宽度,则将在单词边界(即空格)处换行。如果设置为false,则行将在字符边界处换行。
      返回:
      如果换行样式应为单词边界而不是字符边界
      参见:
    • getLineOfOffset

      public int getLineOfOffset(int offset) throws BadLocationException
      将偏移量转换为组件文本中的行号。
      参数:
      offset - 偏移量 >= 0
      返回:
      行号 >= 0
      抛出:
      BadLocationException - 如果偏移量小于零或大于文档长度。
    • getLineCount

      @BeanProperty(bound=false) public int getLineCount()
      确定区域中包含的行数。
      返回:
      行数 > 0
    • getLineStartOffset

      public int getLineStartOffset(int line) throws BadLocationException
      确定给定行的起始偏移量。
      参数:
      line - 要转换的行号 >= 0
      返回:
      偏移量 >= 0
      抛出:
      BadLocationException - 如果行号小于零或大于等于文档中包含的行数(由getLineCount报告)。
    • getLineEndOffset

      public int getLineEndOffset(int line) throws BadLocationException
      确定给定行的结束偏移量。
      参数:
      line - 行号 >= 0
      返回:
      偏移量 >= 0
      抛出:
      BadLocationException - 如果行号小于零或大于等于文档中包含的行数(由getLineCount报告)。
    • insert

      public void insert(String str, int pos)
      在指定位置插入指定的文本。如果模型为null或文本为null或空,则不执行任何操作。
      参数:
      str - 要插入的文本
      pos - 要插入的位置 >= 0
      抛出:
      IllegalArgumentException - 如果pos是模型中的无效位置
      参见:
    • append

      public void append(String str)
      将给定文本追加到文档的末尾。如果模型为null或字符串为null或空,则不执行任何操作。
      参数:
      str - 要插入的文本
      参见:
    • replaceRange

      public void replaceRange(String str, int start, int end)
      用新指定的文本替换指定起始和结束位置的文本。如果模型为null,则不执行任何操作。如果新字符串为null或空,则仅执行删除操作。
      参数:
      str - 用作替换的文本
      start - 起始位置 >= 0
      end - 结束位置 >= start
      抛出:
      IllegalArgumentException - 如果范围的某部分是模型中的无效位置
      参见:
    • getRows

      public int getRows()
      返回TextArea中的行数。
      返回:
      行数 >= 0
    • setRows

      @BeanProperty(bound=false, description="the number of rows preferred for display") public void setRows(int rows)
      为此TextArea设置行数。设置新值后调用invalidate()。
      参数:
      rows - 行数 >= 0
      抛出:
      IllegalArgumentException - 如果行数小于0
      参见:
    • getRowHeight

      protected int getRowHeight()
      定义行高的含义。默认情况下,这是字体的高度。
      返回:
      高度 >= 1
    • getColumns

      public int getColumns()
      返回TextArea中的列数。
      返回:
      列数 >= 0
    • setColumns

      @BeanProperty(bound=false, description="the number of columns preferred for display") public void setColumns(int columns)
      为此TextArea设置列数。设置新值后调用invalidate()。
      参数:
      columns - 列数 >= 0
      抛出:
      IllegalArgumentException - 如果列数小于0
      参见:
    • getColumnWidth

      protected int getColumnWidth()
      获取列宽。对于某些字体,列的含义可以被认为是一个相当弱的概念。此方法用于定义列的宽度。默认情况下,这被定义为所使用字体的字符m的宽度。此方法可以重新定义为某个替代量。
      返回:
      列宽度 >= 1
    • getPreferredSize

      public Dimension getPreferredSize()
      返回TextArea的首选大小。这是显示文本所需的大小和视口请求的大小之间的最大值。
      覆盖:
      getPreferredSize 在类 JComponent
      返回:
      大小
      参见:
    • setFont

      public void setFont(Font f)
      设置当前字体。这将删除缓存的行高和列宽,以便新字体将被反映,并调用revalidate()。
      覆盖:
      setFont 在类 JComponent
      参数:
      f - 用作当前字体的字体
      参见:
    • paramString

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

      @BeanProperty(bound=false) public boolean getScrollableTracksViewportWidth()
      如果视口应始终强制此可滚动组件的宽度与视口的宽度匹配,则返回true。如果行换行策略为true,则实现为返回true,如果不换行,则返回false。
      指定者:
      getScrollableTracksViewportWidth 在接口 Scrollable
      覆盖:
      getScrollableTracksViewportWidth 在类 JTextComponent
      返回:
      如果视口应强制Scrollable的宽度与其自身匹配,则返回true。
    • getPreferredScrollableViewportSize

      @BeanProperty(bound=false) public Dimension getPreferredScrollableViewportSize()
      如果此组件嵌入在JScrollPane中,则返回视口的首选大小。如果已设置所需的列和行设置,则使用它们,否则使用超类行为。
      指定由:
      getPreferredScrollableViewportSize 在接口 Scrollable
      覆盖:
      getPreferredScrollableViewportSize 在类 JTextComponent
      返回:
      此Scrollable视图的JViewport的preferredSize。
      参见:
    • getScrollableUnitIncrement

      public int getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction)
      显示逻辑行或列的组件应计算滚动增量,以完全显示一个新行或列,具体取决于方向的值。这是实现为使用getRowHeightgetColumnWidth方法返回的值。

      像JScrollPane这样的滚动容器将在每次用户请求单位滚动时使用此方法。

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

      @BeanProperty(bound=false) public AccessibleContext getAccessibleContext()
      获取与此JTextArea关联的AccessibleContext。对于JTextArea,AccessibleContext采用AccessibleJTextArea的形式。如有必要,将创建一个新的AccessibleJTextArea实例。
      指定由:
      getAccessibleContext 在接口 Accessible
      覆盖:
      getAccessibleContext 在类 JTextComponent
      返回:
      作为此JTextArea的AccessibleContext的AccessibleJTextArea