首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java AWT TextArea 文本區域完全指南:多行編輯、追加/插入/替換、捲軸控制演進

     編輯:Java 相關知識

TextArea 核心特性

  • 多行文字編輯區域,支援換行、捲動
  • 繼承 TextComponent,擁有 TextField 所有功能 (選取、複製、剪貼等)
  • 進階編輯:appendText(), insertText(), replaceText() (Java 1.0) / append(), insert(), replaceRange() (1.1+)
  • Java 1.0:永遠顯示垂直+水平捲軸
  • Java 1.1+:建構子參數控制捲軸策略

Java 1.0 範例:TextArea1

//: TextArea1.java
public class TextArea1 extends Applet {
    TextArea t1 = new TextArea("t1", 1, 30); // 1行 x 30字元
    TextArea t2 = new TextArea("t2", 4, 30); // 4行 x 30字元
    Button b1 = new Button("Text Area 1"), b2 = new Button("Text Area 2"),
           b3 = new Button("Replace Text"), b4 = new Button("Insert Text");

    public void init() {
        add(b1); add(t1); add(b2); add(t2); add(b3); add(b4);
    }

    public boolean action(Event evt, Object arg) {
        if (evt.target.equals(b1)) showStatus(t1.getText());
        else if (evt.target.equals(b2)) {
            t2.setText("Inserted by Button 2");
            t2.appendText(": " + t1.getText());
            showStatus(t2.getText());
        } else if (evt.target.equals(b3)) {
            String s = " Replacement ";
            t2.replaceText(s, 3, 3 + s.length()); // 替換位置3長度s.length()
        } else if (evt.target.equals(b4)) {
            t2.insertText(" Inserted ", 10); // 位置10插入
        } else return super.action(evt, arg);
        return true;
    }
}

關鍵編輯方法對照

Java 1.0Java 1.1+說明
appendText(String)append(String)尾部追加
insertText(String, pos)insert(String, pos)指定位置插入
replaceText(String, start, end)replaceRange(String, start, end)範圍替換 [start, end)
getText()getText()取得全部文字
getSelectedText()getSelectedText()取得選取文字
setEditable(boolean)setEditable(boolean)設定可編輯性

Java 1.1+ 捲軸控制建構子

new TextArea(text, rows, cols, SCROLLBARS_NONE);
new TextArea(text, rows, cols, SCROLLBARS_VERTICAL_ONLY);
new TextArea(text, rows, cols, SCROLLBARS_HORIZONTAL_ONLY);
new TextArea(text, rows, cols, SCROLLBARS_BOTH); // 預設
  • 捲軸策略建構時決定,運行期不可變更
  • 即使無捲軸,游標鍵導航仍受限於可視區域

現代化對應

技術核心類別關鍵增強
SwingJTextArea + JScrollPane捲軸策略動態可改 (setVerticalScrollBarPolicy())、行號顯示、摺疊、高亮、Document 模型分離、Undo/Redo 支援
JavaFXTextAreaCSS 樣式、豐富文字 (非純文字)、提示文字 (promptText)、屬性綁定、虛擬化大文檔
Web<textarea>原生多行、maxlength, placeholder, wrap、JS 富文本編輯器 (Quill, TipTap, ProseMirror)

最佳實踐

  1. 唯讀日誌/輸出區:setEditable(false) + append(),配合 DefaultCaret.ALWAYS_UPDATE (Swing) 自動捲動到底。
  2. 大量文字 (MB 級) 必須使用虛擬化/分頁載入,避免記憶體/效能問題。
  3. 程式化修改大量文字時,Swing 使用 Document 批次更新,JavaFX 使用 TextArea 直接操作均可。
  4. 捲軸策略:編輯區預設 BOTH,日誌區 VERTICAL_ONLY,代碼編輯器 BOTH + 行號。

總結

TextArea 是「多行純文字編輯」的基石元件。Java 1.0 固定雙捲軸,1.1+ 引入建構子控制但運行期不可變。現代 JTextArea + JScrollPane 實現捲軸策略動態控制、文檔模型分離、Undo/Redo、語法高亮等專業編輯器功能。理解 append/insert/replaceRange 三大編輯原語,是實作日誌檢視器、代碼編輯器、表單輸入區的基礎。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved