프로그래밍 언어/JAVA

JTextField, 텍스트필드 컴포넌트

· 코딩마이데이

JTextField

JTextField를 이용하면 한 줄은 문자열을 입력받는 창(택스트필드)을 만들 수 있습니다. 입력 가능한 문자 개수와 창의 크기는 응용프로그램에서 변경할 수 있습니다. 텍스트필드에 문자열 입력 도중 <Enter> 키가 입력되면 Action 이벤트가 발셍합니다.

 

JTextField 컴포넌트의 생성

텍스트필드 컴포넌트의 생성자는 다음과 같습니다.

JTextField() // 빈 텍스트필드
JTextField(int cols) // 입력 창의 열의 개수가 cols 게인 텍스트필드
JTextField(String text) // text 문자열로 초기화된 텍스트 필드
JTextField(String text, int cols) // 입력 창의 열의 개수는 cols개이고 text 문지열로 초기화된 텍스트핑드

 

텍스트필드를 생성하는 몇 가지 사례를 살펴봅시다.

입력 창의 크기가 10개 문자 크기인 텍스트 필드는 다음 코드를 생성합니다. 입력 창의 크기가 10이라는 뜻은 입력 가능한 문자의 게수가 10이라는 의미가 아닙니다.  창의 크기를 나타내는 수치입니다.

JTextField tf1 = new JTextField(10);

 

"컴퓨터공학과" 문자열을 초깃값을 가지는 텍스트필드를 생성하는 코드는 다음과 같습니다.

JTextField cf2 = new JTextField("컴퓨터공학과");

 

입력 창이 20개 문자 크기이고 "대한만국대학교"로 초기화된 텍스트필드는 다음 코드로 생성합니다.

JTextField tf3 = new JTextField("대한민국대학교", 20); // 입력 창은 20개 문자 크기

 

간단한 텍스트필드 컴포넌트 만들기

import javax.swing.*;
import java.awt.*;

public class TextFieldEx extends JFrame {
    public TextFieldEx() {
        setTitle("텍스트필드 만들기");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Container c = getContentPane();
        c.setLayout(new FlowLayout());

        c.add(new JLabel("이름 "));
        c.add(new JTextField(20)); // 창의 열 개수 20
        c.add(new JLabel("학과 "));
        c.add(new JTextField("컴퓨터공학과", 20)); // 창의 열 개수 20
        c.add(new JLabel("주소 "));
        c.add(new JTextField("서울시 ...", 20)); // 창의 열 개수 20

        setSize(300, 150);
        setVisible(true);
    }

    public static void main(String[] args) {
        new TextFieldEx();
    }
}

 

[실행결과]

초기 화면
사용자가 이름과 주소를 입력한 경우

 

JTextField의 주요 메소드 활용

JTextField의 메소드를 활용하는 몇 가지 사례를 소개합니다.

 

문자열의 편집 불가능하게 하기

다음 코드는 사용자가 텍스트필드 창에 문자열을 입력하거나 수정할 수 없도록 합니다.

JTextField tf = new JTextField();
tf.setEditable(false); // 텍스트필드 창에 입력하거나 수정 불가

 

입력 창에 문자열 출력

다음 코드는 텍스트필드 창에서 문자열을 "hello"로 수정하여 출력합니다.

tf.setText("hello"); // "hello"를 텍스트필드 창에 출력

 

문자열의 폰트 지정

다음 코드는 텍스트필드 입력 창의 문자열을 고딕체에 이텔릭 20픽셀 크기로 출력되게 합니다.

tf.setFont(new Font("고딕체", Font.ITALIC, 20));