模块  java.desktop
软件包  javax.swing

Class JTextArea

  • 实现的所有接口
    ImageObserverMenuContainerSerializableAccessibleScrollable

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

    此组件具有java.awt.TextArea类中找不到的java.awt.TextArea 应该咨询超类以获得更多功能。 具有更多功能的备选多行文本类是JTextPaneJEditorPane

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

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

    java.awt.TextArea具有两个属性rowscolumns ,用于确定首选大小。 JTextArea使用这些属性指示放置在JScrollPane内的视口的首选大小,以匹配java.awt.TextArea提供的功能。 JTextArea具有显示所有文本所需内容的首选大小,以便它在JScrollPane内正常运行。 如果rowscolumns的值等于零,则沿该轴的首选大小将用于沿同一轴的视口首选大小。

    java.awt.TextArea可以更改通过添加一个被监控TextListenerTextEvent秒。 在基于JTextComponent的组件中,通过DocumentEventDocumentListeners从模型广播变化。 如果需要, DocumentEvent给出了变化的位置和变化的类型。 代码片段可能类似于:

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

    警告: Swing不是线程安全的。 有关更多信息,请参阅Swing's Threading Policy

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

    从以下版本开始:
    1.2
    另请参见:
    JTextPaneJEditorPaneSerialized Form
    • 构造方法详细信息

      • JTextArea

        public JTextArea()
        构造一个新的TextArea。 设置默认模型,初始字符串为空,行/列设置为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 - 如果行或列参数为负数。
    • 方法详细信息

      • 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()
      • 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()
      • 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()
      • getWrapStyleWord

        public boolean getWrapStyleWord()
        获取文本区域换行时使用的换行样式。 如果设置为true,那么如果行太长而无法适应分配的宽度,那么这些行将被包裹在单词边界(即空白空间)。 如果设置为false,则行将在字符边界处换行。
        结果
        如果换行样式应该是单词边界而不是字符边界
        另请参见:
        setWrapStyleWord(boolean)
      • 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报告),则抛出该行。
      • append

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

        public void replaceRange​(String str,
                                 int start,
                                 int end)
        使用指定的新文本替换指示的开始位置到结束位置的文本。 如果模型为null,则不执行任何操作。 如果新字符串为null或为空,只需删除。
        参数
        str - 用作替换的文本
        start - 起始位置> = 0
        end - 结束位置> =开始
        异常
        IllegalArgumentException - 如果范围的一部分是模型中的无效位置
        另请参见:
        insert(java.lang.String, int)
      • getRows

        public int getRows()
        返回TextArea中的行数。
        结果
        行数> = 0
      • getRowHeight

        protected int getRowHeight()
        定义行高的含义。 默认为字体高度。
        结果
        高度> = 1
      • getColumns

        public int getColumns()
        返回TextArea中的列数。
        结果
        列数> = 0
      • getColumnWidth

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

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

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

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

        滚动容器(如JScrollPane)将在每次用户请求单元滚动时使用此方法。

        Specified by:
        getScrollableUnitIncrement在接口 Scrollable
        重写:
        getScrollableUnitIncrement在类 JTextComponent
        参数
        visibleRect - 视口中可见的视图区域
        orientation - SwingConstants.VERTICAL或SwingConstants.HORIZONTAL。
        direction - 向上/向左滚动小于零,向下/向右滚动大于零。
        结果
        在指定方向上滚动的“单位”增量
        异常
        IllegalArgumentException - 用于无效的方向
        另请参见:
        JScrollBar.setUnitIncrement(int)getRowHeight()getColumnWidth()