Java GUI 프로그래밍에서 JTextField와 JTextArea의 가장 큰 차이점은 입력할 수 있는 텍스트의 줄 수입니다. JTextField는 GUI 애플리케이션에서 한 줄(single line)의 텍스트만 입력할 수 있는 반면, JTextArea는 여러 줄(multiple lines)의 텍스트를 입력하고 표시할 수 있습니다.
JTextField란?
- JTextField는 사용자가 한 줄 형식으로 텍스트 값을 입력할 수 있게 해주는 가장 중요한 Swing 컴포넌트 중 하나입니다.
- 필드 안에 입력이 발생하면 ActionListener 인터페이스를 통해 이벤트를 처리할 수 있어, Enter 키 입력 등에 손쉽게 반응하는 UI를 만들 수 있습니다.
- JTextComponent는 JTextField의 슈퍼클래스로, 텍스트 편집에 필요한 공통 메서드 집합을 제공합니다.
- JTextField 클래스의 주요 메서드로는 setText(), getText(), setEnabled() 등이 있습니다.
예제 코드
import javax.swing.*;
import java.awt.*;
public class JTextFieldTest {
public static void main(String[] args) {
final JFrame frame = new JFrame("JTextField Demo");
JLabel lblFirstName = new JLabel("First Name:");
JTextField tfFirstName = new JTextField(20);
lblFirstName.setLabelFor(tfFirstName);
JLabel lblLastName = new JLabel("Last Name:");
JTextField tfLastName = new JTextField(20);
lblLastName.setLabelFor(tfLastName);
JPanel panel = new JPanel();
panel.setLayout(new FlowLayout());
panel.add(lblFirstName);
panel.add(tfFirstName);
panel.add(lblLastName);
panel.add(tfLastName);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 100);
frame.getContentPane().add(panel, BorderLayout.CENTER);
frame.setVisible(true);
}
}
실행 결과

JTextArea란?
- JTextArea는 텍스트를 화면에 표시하거나 사용자가 직접 입력할 수 있도록 지원하는 멀티라인(여러 줄) 텍스트 컴포넌트입니다.
- CaretListener 인터페이스를 생성하여 캐럿(커서) 위치의 변화를 감지하고 처리할 수 있습니다.
- JTextComponent는 JTextArea의 슈퍼클래스로, JTextArea에서 사용되는 공통 메서드 집합을 제공합니다.
- JTextArea 클래스의 주요 메서드로는 setText(), append(), setLineWrap(), setWrapStyleWord(), setCaretPosition() 등이 있습니다.
예제 코드
import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;
public class JTextAreaTest {
public static void main(String args[]) {
JFrame frame = new JFrame("JTextArea Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTextArea textArea = new JTextArea();
JScrollPane scrollPane = new JScrollPane(textArea);
frame.add(scrollPane, BorderLayout.CENTER);
CaretListener listener = new CaretListener() {
public void caretUpdate(CaretEvent caretEvent) {
System.out.println("Dot: " + caretEvent.getDot());
System.out.println("Mark: " + caretEvent.getMark());
}
};
textArea.addCaretListener(listener);
frame.setSize(250, 150);
frame.setVisible(true);
}
}
실행 결과

JTextField vs JTextArea 비교 요약
| 구분 | JTextField | JTextArea |
|---|---|---|
| 입력 가능 줄 수 | 한 줄 | 여러 줄 |
| 주요 이벤트 리스너 | ActionListener | CaretListener |
| 대표 메서드 | setText(), getText(), setEnabled() | setText(), append(), setLineWrap(), setWrapStyleWord(), setCaretPosition() |
| 적합한 용도 | 아이디, 검색어 등 짧은 입력 | 메모, 상세 설명 등 긴 텍스트 입력 |
참고로 JTextArea는 내용이 많아질 경우 화면을 벗어날 수 있으므로, 위 예제처럼 JScrollPane으로 감싸서 스크롤 기능을 함께 사용하는 것이 일반적입니다. 또한 setLineWrap(true)와 setWrapStyleWord(true)를 설정하면 긴 문장이 자동으로 줄바꿈되어 가독성이 크게 향상됩니다.