7.4 KiB
7.4 KiB
1. 주요 입력 컴포넌트 메서드 정리
(1) JTextField 메서드
| 메서드 | 설명 |
|---|---|
setText(String text) |
텍스트 필드에 문자열을 설정 |
getText() |
현재 입력된 텍스트를 반환 |
setEditable(boolean b) |
편집 가능 여부 설정 (false이면 읽기 전용) |
setColumns(int columns) |
텍스트 필드의 너비(문자 개수 단위) 설정 |
addActionListener(ActionListener l) |
Enter 키 입력 시 이벤트 리스너 추가 |
setHorizontalAlignment(int alignment) |
텍스트 정렬 방식 설정 (LEFT, CENTER, RIGHT) |
(2) JPasswordField 메서드
| 메서드 | 설명 |
|---|---|
setText(String text) |
비밀번호 필드에 문자열 설정 |
getPassword() |
현재 입력된 비밀번호를 char[] 배열로 반환 (보안상 getText() 대신 사용) |
setEchoChar(char c) |
입력된 문자 대신 표시할 마스킹 문자 설정 (* 등) |
setEditable(boolean b) |
편집 가능 여부 설정 |
addActionListener(ActionListener l) |
Enter 키 입력 시 이벤트 리스너 추가 |
(3) JTextArea 메서드
| 메서드 | 설명 |
|---|---|
setText(String text) |
텍스트 영역에 문자열 설정 |
getText() |
현재 입력된 텍스트를 반환 |
append(String text) |
현재 텍스트 뒤에 새로운 문자열 추가 |
setEditable(boolean b) |
편집 가능 여부 설정 |
setRows(int rows) |
텍스트 영역의 행 개수 설정 |
setColumns(int columns) |
텍스트 영역의 열 개수 설정 |
setLineWrap(boolean b) |
자동 줄바꿈 여부 설정 (true이면 줄이 길어지면 자동 개행) |
setWrapStyleWord(boolean b) |
단어 단위로 줄바꿈할지 설정 (true이면 단어 기준으로 개행) |
2. 관련 이벤트 정리
| 이벤트 리스너 | 관련 컴포넌트 | 설명 |
|---|---|---|
ActionListener |
JTextField, JPasswordField |
사용자가 Enter 키를 눌렀을 때 발생 |
KeyListener |
JTextField, JPasswordField, JTextArea |
키보드 입력(키 누름, 해제, 입력) 감지 |
FocusListener |
JTextField, JPasswordField, JTextArea |
입력 필드에 포커스가 들어오거나 빠질 때 감지 |
DocumentListener |
JTextField, JPasswordField, JTextArea |
텍스트 변경 감지 (입력, 삭제, 변경) |
3. Swing 입력 컴포넌트 예제 코드와 설명
(1) JTextField 예제 – 입력값을 버튼 클릭 시 표시
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class TextFieldExample {
public static void main(String[] args) {
JFrame frame = new JFrame("JTextField Example");
frame.setSize(300, 150);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new FlowLayout());
JLabel label = new JLabel("이름:");
JTextField textField = new JTextField(15);
JButton button = new JButton("확인");
JLabel resultLabel = new JLabel("");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String name = textField.getText();
resultLabel.setText("입력된 이름: " + name);
}
});
frame.add(label);
frame.add(textField);
frame.add(button);
frame.add(resultLabel);
frame.setVisible(true);
}
}
설명:
JTextField에 이름을 입력하고,- 버튼 클릭 시
JLabel에 입력된 값이 표시됨. ActionListener를 사용하여 버튼 클릭 이벤트를 처리.
(2) JPasswordField 예제 – 비밀번호 입력 확인
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Arrays;
public class PasswordFieldExample {
public static void main(String[] args) {
JFrame frame = new JFrame("JPasswordField Example");
frame.setSize(300, 150);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new FlowLayout());
JLabel label = new JLabel("비밀번호:");
JPasswordField passwordField = new JPasswordField(15);
JButton button = new JButton("로그인");
JLabel resultLabel = new JLabel("");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
char[] password = passwordField.getPassword();
if (Arrays.equals(password, "1234".toCharArray())) {
resultLabel.setText("로그인 성공!");
} else {
resultLabel.setText("로그인 실패!");
}
Arrays.fill(password, ' '); // 보안상 배열 비우기
}
});
frame.add(label);
frame.add(passwordField);
frame.add(button);
frame.add(resultLabel);
frame.setVisible(true);
}
}
설명:
JPasswordField에 비밀번호를 입력하고,- 버튼 클릭 시 비밀번호가
"1234"와 일치하면 "로그인 성공!", 아니면 "로그인 실패!" 출력. getPassword()를 사용하여 보안 강화 (getText()대신 사용).
(3) JTextArea 예제 – 여러 줄 입력 필드
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class TextAreaExample {
public static void main(String[] args) {
JFrame frame = new JFrame("JTextArea Example");
frame.setSize(400, 250);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
JTextArea textArea = new JTextArea(10, 30);
textArea.setLineWrap(true);
textArea.setWrapStyleWord(true);
JButton button = new JButton("입력 내용 확인");
JLabel resultLabel = new JLabel("출력: ");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
resultLabel.setText("출력: " + textArea.getText());
}
});
frame.add(new JScrollPane(textArea), BorderLayout.CENTER);
frame.add(button, BorderLayout.SOUTH);
frame.add(resultLabel, BorderLayout.NORTH);
frame.setVisible(true);
}
}
설명:
JTextArea는 여러 줄 입력이 가능.setLineWrap(true)와setWrapStyleWord(true)를 설정하면 단어 단위로 자동 줄바꿈.JScrollPane을 사용하면 스크롤 기능 추가 가능.- 버튼 클릭 시 입력된 내용을
JLabel에 표시.
총정리
JTextField: 한 줄 입력 필드, Enter 키 감지 가능.JPasswordField: 보안 입력 필드,getPassword()를 사용해야 함.JTextArea: 여러 줄 입력 가능, 자동 줄바꿈 기능 제공.- 관련 이벤트:
ActionListener(Enter 키 감지),KeyListener(키 입력 감지),FocusListener(포커스 감지).
위 내용을 기반으로 다양한 입력 폼을 만들 수 있다!