Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java에서 JTextField와 JTextArea의 차이점 완벽 정리

Java GUI 프로그래밍에서 JTextFieldJTextArea의 가장 큰 차이점은 입력할 수 있는 텍스트의 줄 수입니다. 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);
    }
}

실행 결과

Java에서 JTextField와 JTextArea의 차이점 완벽 정리

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);
    }
}

실행 결과

Java에서 JTextField와 JTextArea의 차이점 완벽 정리

JTextField vs JTextArea 비교 요약

구분JTextFieldJTextArea
입력 가능 줄 수한 줄여러 줄
주요 이벤트 리스너ActionListenerCaretListener
대표 메서드setText(), getText(), setEnabled()setText(), append(), setLineWrap(), setWrapStyleWord(), setCaretPosition()
적합한 용도아이디, 검색어 등 짧은 입력메모, 상세 설명 등 긴 텍스트 입력


참고로 JTextArea는 내용이 많아질 경우 화면을 벗어날 수 있으므로, 위 예제처럼 JScrollPane으로 감싸서 스크롤 기능을 함께 사용하는 것이 일반적입니다. 또한 setLineWrap(true)setWrapStyleWord(true)를 설정하면 긴 문장이 자동으로 줄바꿈되어 가독성이 크게 향상됩니다.