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

Java AWT TextField 文本字段完全指南:單行編輯、選取文字、可編輯性控制與事件觸發

     編輯:Java 相關知識

TextField 核心特性

  • 單行文字編輯區域
  • 繼承 TextComponent:支援選取、複製、剪貼、游標移動
  • 建構選項:new TextField(), new TextField(text), new TextField(columns), new TextField(text, columns)
  • columns 影響偏好寬度 (約字元數),非嚴格限制
  • Enter 鍵觸發 action() (1.0) / ActionListener (1.1+)

完整範例:TextField1

//: TextField1.java
public class TextField1 extends Applet {
    Button b1 = new Button("Get Text"), b2 = new Button("Set Text");
    TextField t = new TextField("Starting text", 30);
    String s = new String();

    public void init() {
        add(b1); add(b2); add(t);
    }

    public boolean action(Event evt, Object arg) {
        if (evt.target.equals(b1)) { // 取得文字
            showStatus(t.getText());
            s = t.getSelectedText();
            if (s.length() == 0) s = t.getText(); // 無選取時取全部
            t.setEditable(true); // 允許編輯
        } else if (evt.target.equals(b2)) { // 設定文字
            t.setText("Inserted by Button 2: " + s);
            t.setEditable(false); // 唯讀 (但仍可選取)
        } else return super.action(evt, arg);
        return true;
    }
}

關鍵方法與行為

方法說明
getText()取得全部文字內容
getSelectedText()取得滑鼠選取的文字 (無選取回傳空字串 "",非 null)
setText(String)設定全部文字內容
setEditable(boolean)true=可編輯, false=唯讀 (仍可選取/複製)
select(start, end)程式化選取範圍
selectAll()全選
setEchoChar('*')密碼欄位模式 (Java 1.0/1.1),Swing 用 JPasswordField

事件觸發機制

  • Enter 鍵:觸發 ActionEvent / action()
  • 文字改變:Java 1.1+ TextListener / DocumentListener (Swing) 即時通知
  • 焦點/鍵盤/滑鼠:標準元件事件

現代化對應

技術核心類別關鍵增強
SwingJTextField, JFormattedTextField, JPasswordField文檔模型 (Document) 即時監聽/過濾/驗證、格式化輸入 (日期/數字/遮罩)、密碼欄位專用、邊框/內邊距/圖示自訂
JavaFXTextField, PasswordField, TextFormatter屬性綁定 (textProperty())、TextFormatter 過濾/轉換、CSS 樣式、提示文字、清除按鈕
Web<input type="text/password/email/number/...>原生驗證 (pattern, required, type)、自動完成、輸入法整合、CSS 完整控制

最佳實踐

  1. 密碼欄位:Swing 必用 JPasswordField (回傳 char[] 而非 String,用畢立即清零),JavaFX 用 PasswordField。
  2. 即時驗證/格式化:Swing DocumentFilter / JavaFX TextFormatter,而非焦點失去後驗證。
  3. 提示文字:Swing 無原生支援 (需自繪或第三方),JavaFX setPromptText(),Web placeholder。
  4. 可編輯性視覺回饋:唯讀欄位建議灰底/邊框變色,區別於可編輯欄位。

總結

TextField 是「單行文字輸入」的基石元件。核心 API (getText/setText/getSelectedText/setEditable) 極簡且穩定。Enter 觸發動作事件是表單提交的經典觸發點。現代框架引入 Document/TextFormatter 實現即時驗證/格式化/過濾,JPasswordField/PasswordField 解決密碼安全殘留問題。掌握基礎行為,輕鬆駕馭進階輸入元件。

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