| 維度 | JTextField | JTextArea |
|---|---|---|
| 繼承體系 | JTextComponent → JComponent | JTextComponent → JComponent |
| 行數 | 單行 | 多行 |
| 預設事件 | ActionEvent (Enter) | 無專屬事件 |
| 捲動支援 | 不需 | 需包裹 JScrollPane |
| 換行處理 | 無 | setLineWrap / setWrapStyleWord |
| 文本操作 | 整體 setText/getText | append/insert/replaceRange |
new JTextField() // 1 字元寬
new JTextField(int columns) // 指定顯示寬度
new JTextField(String text) // 初始文字
new JTextField(String text, int columns)
setEditable(false):唯讀模式setHorizontalAlignment(CENTER/LEFT/RIGHT):對齊addActionListener(l):監聽 Enter 確認setColumns(int) / getColumns():動態調整顯示寬度requestFocusInWindow():獲取焦點new JTextArea()
new JTextArea(String text)
new JTextArea(int rows, int columns)
new JTextArea(String text, int rows, int columns)
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);
*。getPassword() 回傳 char[],使用後務必 Arrays.fill(arr, ' ') 清除。setEchoChar((char)0) 可暫時顯示明文(如「顯示密碼」勾選框)。兩者皆基於 Document 介面(預設 PlainDocument),可實作:
((AbstractDocument)field.getDocument()).setDocumentFilter(new DocumentFilter() {...}) 限制數字、長度、大寫等。document.addDocumentListener(e -> ...) 即時驗證、字數統計。JFormattedTextField 整合 Formatter 處理日期、金額、IP 等。JTextField 適合單行表單輸入;JTextArea 適合多行編輯、日誌顯示。掌握 Document 模型與 JScrollPane 整合,能構建專業級文字介面。密碼處理請務必使用 JPasswordField 並清除 char 陣列。