JTextField와 달리 JTextArea에는 여러 행의 텍스트가 들어 갈 수 있다. 행 넘기기(line wrapping) 기능이나 스크롤 바가 자동으로 설정되지 않기 때문에 만드는 과정에서 몇 가지 설정을 해야 한다. JTextArea에 스크롤 기능을 추가하려면 그 구성요소를 ScrollPane(스크롤 틀 클래스)에 집어넣어야 한다. ScrollPane은 스크롤 기능을 제공하는 객체이며 텍스트 영역의 스크롤 기능을 책임진다.
1. 생성자
JTextArea text = new JTextArea(10,30); //10행, 30열
2. 사용방법
1)수직 스크롤 바를 만든다.
//JScrollPane을 만들고 그 객체에 스크롤 기능을 추가해야 하는 텍스트 영역을 전달한다.
JScrollPane scroller = new JScrollPane(text);
//행 넘기기 기능(line wrapping)을 킨다.
text.setLineWrap(true);
//스크롤 틀에 수직 방향의 스크롤 바만 집어 넣도록 지시한다.
scroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
scroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
//중요한 부분!!! 텍스트 영역을(스크롤 틀 생성자를 통해서) 스크롤 틀에 전달한 다음 그 스크롤 틀을
//패널에 추가한다. 텍스트 영역을 패널에 직접 추가하지 않는다.
panel.add(scroller);/
2)그 안에 있는 텍스트를 바꾼다.
text.setText("First Hello World!");
3)텍스트를 추가한다.
text.append("Second Hello World!");
4)필드에 들어있는 텍스트를 선택/강조한다.
text.selectAll();
5)커서를 다시 필드에 위치시킨다.(사용자가 바로 타이핑할 수 있게 설정)
text.requestFocus();
TextAreal.java
cf.
1) JLabel
- JLabel(String) : 문자열 레이블 생성
- JLabel(String, int) : 문자열과 정렬 상태 레이블 생성
- JLabel(String, Icon, int) : 문자열과 아이콘, 정렬 상태 레이블 생성
JLabel test = new JLabel("Test", SwingConstants.LEFT);
2) JTextField
- JTextField() : 빈 텍스트 필드 생성
- JTextField(int) : 정해진 가로 길이를 갖는 텍스트 필드 생성
- JTextField(String, int) : 정해진 문장과 가로 길이를 갖는 텍스트 필드 생성
setText(String) 메소드는 텍스트를 원하는 문자열로 바꾸어 준다.
getText()메소드는 컴포넌트의 현재 텍스트값을 문자열로 반환해준다.
getSelectedText()는 사용자가 선택한 텍스트만을 검색해준다.
setEchoChar(Char) 메소드를 사용하여 입력되는 문자를 다른 특정한 문자로 바꿀 수 있다.
3) JTextArea
- JTextArea(int, int) : 정해진 수의 행과 열을 갖는 텍스트 에어리어 생성
- JTextArea(String, int, int) : 정해진 수의 행과 열 그리고 정해진 스트링값을 갖는 텍스트 에어리어 생성
append(String, int) 메소드를 사용하여 원하는 문자를 현재 문자의 제일 끝에 추가할 수 있다.
insert(String, int) 메소드를 사용해서 원하는 문자를 원하는 위치에 삽입 할 수 있다.
setLineWrap(boolean)메소드는 텍스트가 컴포넌트의 끝을 넘긴다면 다음 줄로 넘어갈 것인지를 선택할 수 있다.
setWrapStyleWord(boolean)메소드는 텍스트가 다음 줄로 넘어갈 때 현재의 단어를 넘길 것인지, 현재의 문자를 넘길 것인지 결정한다.