Files
swing-examples/doc/03_text_components.md
2024-03-30 19:57:14 +09:00

193 lines
4.9 KiB
Markdown

# 텍스트 컴포넌트
* `isEditable()` / `setEditable(boolean)`
* `getDragEnabled()` / `setDragEnabled(boolean)`
* `getDisabledTextColor()` / `setDisabledTextColor(Color)`
* `getMargin()` / `setMargin(Insets)` : 텍스트와 컴포넌트 보더 사이 간격
* `getSelectedText()`
* `select(int,int)` / `selectAll()`
* `getSelectionStart()` / `setSelectionStart(int)` / `getSelectionEnd()` / `setSelectionEnd(int)`
* `getSelectionColor()` / `setSelectionColor(Color)`
* `getSelectedTextColor()` / `setSelectedTextColor(Color)`
* `viewToModel(Point)` / `modelToView(int)`
* `copy()` / `cut()` / `paste()` / `replaceSelection(String)`
* `getActions()`
* `getInputMap()`
* `put(KeyStroke,Object)`
* `getDocument()` / `setDocument(Document)`
* `setDocumentFilter(DocumentFilter)`
* `getCaret()` / `setCaret(Caret)`
* `getCaretColor()` / `setCaretColor(Color)`
* `getCaretPosition()` / `moveCaretPosition(int)` / `setCaretPosition(int)`
* `addCaretListener()` / `removeCaretListener()`
* `setNavigationFilter()`
* `getHighlighter()` / `setHighlighter(Highlighter)`
* `read(Reader, Object)` / `write(Writer)`
* `print()` / `print(MessageFormat,MessageFormat)`
* `getPrintable(MessageFormat,MessageFormat)`
## Document
* `addDocumentListener()` / `removeDocumentListener()`
* `addUndoableEditListener()` / `removeUndoableEditListener()`
* `getLength()`
* `getStartPosition()` / `getEndPosition()`
* `getText(int,int)`
* `getProperty(Object)` / `putProperty(Object,Object)` / `getDocumentProperties()` / `setDocumentProperties(Dictionary)`
## Undo / Redo 구현 - UndoableEditListener
```java
// 언두 매니저를 생성하고, 텍스트 문서에 리스너를 통해 연결한다.
final UndoManager undoManager = new UndoManager();
textArea.getDocument().addUndoableEditListener(undoableEditEvent ->
undoManager.addEdit(undoableEditEvent.getEdit()));
// 버튼을 통해서 액션을 처리한다.
toolBar.add(new AbstractAction("Undo") {
@Override
public void actionPerformed(ActionEvent actionEvent) {
if (undoManager.canUndo()) {
undoManager.undo();
}
}
});
toolBar.add(new AbstractAction("Redo") {
@Override
public void actionPerformed(ActionEvent actionEvent) {
if (undoManager.canRedo()) {
undoManager.redo();
}
}
});
```
## DocumentListener
```java
textArea.getDocument().addDocumentListener(new DocumentListener() {
@Override
public void insertUpdate(DocumentEvent documentEvent) {
Document document = documentEvent.getDocument();
int changeLength = documentEvent.getLength();
}
@Override
public void removeUpdate(DocumentEvent documentEvent) {
}
@Override
public void changedUpdate(DocumentEvent documentEvent) {
}
});
```
## CaretListener
```java
textArea.addCaretListener(new CaretListener() {
@Override
public void caretUpdate(CaretEvent caretEvent) {
int dot = caretEvent.getDot();
int mark = caretEvent.getMark();
}
});
```
## JTextField
* `getText()` / `setText(String)`
* `isEditable()` / `setEditable(boolean)`
* `getColumns()` / `setColumns(int)` : 화면에 표시될 칼럼 길이
* `selectAll()`
* `getHorizontalAlignment()` / `setHorizontalAlignment(int)` : JTextField.LEADING | CENTER | TRAILING
* `addActionListener()` / `removeActionListener()`
## JPasswordField
* `char[] getPassword()`
* `getEchoChar()` / `setEchoChar(char)`
## JFormattedTextField
* `JFormattedTextField()` / `JFormattedTextField(Format)` / `JFormattedTextField(Formatter)` / `JFormattedTextField(FormatterFactory)`
* `getValue()` / `setValue(Object)`
* `getFormatter()` / `setFormatterFactory()`
* `setFocusLostBehavior(int)` : COMMIT_OR_REVERT | COMMIT | PERSIST | REVERT
* `commitEdit()`
* `isEditValid()`
### Format
* DateFormatter
* NumberFormatter
* InternationalFormatter
* MaskFormatter
* DateFormat
* SimpleDateFormat
* NumberFormat
* DefaultFormatterFactory
* DefaultFormatter
#### DefaultFormatter
* `getCommitsOnValidEdit()` / `setCommitsOnValidEdit(boolean)`
* `getOverwriteMode()` / `setOverwriteMode(boolean)`
* `getAllowsInvalid()` / `setAllowsInvalid(boolean)`
#### MaskFormatter
* `#` 아무 숫자 하나
* `'` 이스케잎문자로 사용됨
* `U` 대문자 하나
* `L` 소문자 하나
* `A` 문자 또는 숫자 하나
* `?` 문자 하나
* `*` 아무거나
* `H` 16진수문자 하나
## JTextArea
* `JTextArea()` / `JTextArea(String)` / `JTextArea(int,int)` / `JTextArea(String,int,int)` : 칼럼 갯수, 열 갯수
* `getText()` / `setText(String)`
* `isEditable()` / `setEditable(boolean)`
* `getColumns()` / `setColumns(int)`
* `getRows()` / `setRows(int)`
* `setTabSize(int)`
* `setLineWrap(boolean)`
* `setWrapStyleWord(boolean)`
* `selectAll()`
* `append(String)`
* `insert(String,int)`
* `replaceRange(String,int,int)`
* `getLineCount()`
* `getLineOfOffset(int)`
* `getLineStartOffset(int)`
* `getLineEndOffset(int)`
## JEditorPane
## JTextPane