Module  java.desktop
软件包  javax.swing

Class JTextArea

  • All Implemented Interfaces:
    ImageObserverMenuContainerSerializableAccessibleScrollable


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

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

    java.awt.TextArea内部处理滚动。 JTextArea的不同之处在于它不管理滚动,而是实现了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开始,支持所有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。 创建默认模型,初始字符串为空。
        参数
        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​()
        获取用于扩展选项卡的字符数。 如果文档为空或没有制表符设置,则返回默认值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 - offset> = 0
        结果
        行号> = 0
        异常
        BadLocationException - 如果偏移小于零或大于文档长度,则抛出。
      • getLineCount

        @BeanProperty(bound=false)
        public int getLineCount​()
        确定该区域中包含的行数。
        结果
        行数> 0
      • getLineStartOffset

        public int getLineStartOffset​(int line)
                               throws BadLocationException
        确定给定行开始的偏移量。
        参数
        line - 要翻译的行号> = 0
        结果
        offset> = 0
        异常
        BadLocationException - 如果行小于零或更大或等于文档中包含的行数(由getLineCount报告),则抛出。
      • getLineEndOffset

        public int getLineEndOffset​(int line)
                             throws BadLocationException
        确定给定行末端的偏移量。
        参数
        line - 行> = 0
        结果
        offset> = 0
        异常
        BadLocationException - 如果行小于零或更大或等于文档中包含的行数(由getLineCount报告),则抛出。
      • append

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

        public void replaceRange​(String str,
                                 int start,
                                 int end)
        用指定的新文本替换指定的开始到结束位置的文本。 如果模型为空,则不做任何操作。 如果新的字符串为空或空,只需删除。
        参数
        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()。
        重写:
        setFontJComponent
        参数
        f - 用作当前字体的字体
        另请参见:
        Component.getFont()
      • paramString

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

        public int getScrollableUnitIncrement​(Rectangle visibleRect,
                                              int orientation,
                                              int direction)
        显示逻辑行或列的组件应计算将根据取向值完全暴露一个新行或列的滚动增量。 这是实现使用getRowHeightgetColumnWidth方法返回的值。

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

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