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

Java Swing JTextField 與 JTextArea 深度對比與用法大全

     編輯:Java 相關知識

核心差異速查

維度JTextFieldJTextArea
繼承體系JTextComponent → JComponentJTextComponent → JComponent
行數單行多行
預設事件ActionEvent (Enter)無專屬事件
捲動支援不需需包裹 JScrollPane
換行處理無setLineWrap / setWrapStyleWord
文本操作整體 setText/getTextappend/insert/replaceRange

JTextField 完整建構子

new JTextField()                    // 1 字元寬
new JTextField(int columns)         // 指定顯示寬度
new JTextField(String text)         // 初始文字
new JTextField(String text, int columns)

JTextField 常用方法

  • setEditable(false):唯讀模式
  • setHorizontalAlignment(CENTER/LEFT/RIGHT):對齊
  • addActionListener(l):監聽 Enter 確認
  • setColumns(int) / getColumns():動態調整顯示寬度
  • requestFocusInWindow():獲取焦點

JTextArea 完整建構子

new JTextArea()
new JTextArea(String text)
new JTextArea(int rows, int columns)
new JTextArea(String text, int rows, int columns)

JTextArea 關鍵方法

  • append(String):高效尾部追加(日誌必備)
  • insert(String, int pos):指定位置插入
  • replaceRange(String, int start, int end):區間取代
  • setLineWrap(true):自動換行
  • setWrapStyleWord(true):單字邊界換行
  • getCaretPosition() / setCaretPosition(int):游標控制

捲動條整合(必要步驟)

JTextArea area = new JTextArea(10, 30);
area.setLineWrap(true);
JScrollPane scroll = new JScrollPane(area,
    JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
    JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); // 自動換行時通常關閉水平捲動
container.add(scroll);

密碼框 JPasswordField

  • 繼承 JTextField,回顯字元預設 *。
  • getPassword() 回傳 char[],使用後務必 Arrays.fill(arr, ' ') 清除。
  • setEchoChar((char)0) 可暫時顯示明文(如「顯示密碼」勾選框)。

Document 模型進階(共同基礎)

兩者皆基於 Document 介面(預設 PlainDocument),可實作:

  • 輸入過濾:((AbstractDocument)field.getDocument()).setDocumentFilter(new DocumentFilter() {...}) 限制數字、長度、大寫等。
  • 監聽變更:document.addDocumentListener(e -> ...) 即時驗證、字數統計。
  • 格式化文本框:JFormattedTextField 整合 Formatter 處理日期、金額、IP 等。

總結

JTextField 適合單行表單輸入;JTextArea 適合多行編輯、日誌顯示。掌握 Document 模型與 JScrollPane 整合,能構建專業級文字介面。密碼處理請務必使用 JPasswordField 並清除 char 陣列。

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