add user agent parser and update build configuration
This commit is contained in:
192
docs/swing/입력 컴포넌트.md
Normal file
192
docs/swing/입력 컴포넌트.md
Normal file
@@ -0,0 +1,192 @@
|
||||
## **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` 예제 – 입력값을 버튼 클릭 시 표시**
|
||||
```java
|
||||
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` 예제 – 비밀번호 입력 확인**
|
||||
```java
|
||||
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` 예제 – 여러 줄 입력 필드**
|
||||
```java
|
||||
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` (포커스 감지).
|
||||
|
||||
위 내용을 기반으로 다양한 입력 폼을 만들 수 있다!
|
||||
Reference in New Issue
Block a user