add user agent parser and update build configuration

This commit is contained in:
2025-03-11 11:32:36 +09:00
parent 3db3499d30
commit 09731f464d
47 changed files with 8825 additions and 18 deletions

View 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` (포커스 감지).
위 내용을 기반으로 다양한 입력 폼을 만들 수 있다!