단문을 입력할 때 사용한다.
→ new JTextField( ) : parameter 안에 숫자를 입력하면 텍스트 박스의 크기를 지정해줄 수 있다.
→ setText( ) : parameter 안에 원하는 문자열을 넣으면 텍스트 박스 안에 내가 원하는 문자열을 넣을 수 있다.
→ setEditable(boolean b) : 사용자가 문자를 입력할 수 없지만 드래그는 가능하다. (편집 불가 상태)
→ setEnabled(boolean b) : 사용자가 문자를 입력할 수도 없고 드래그 할 수도 없다. (비활성화 상태)
→ selectAll( ) : 텍스트 입력 컴포넌트의 내용을 전체 선택하는데 사용한다.
→ requestFocus( ) : 특정 컴포넌트에 포커스를 주고 싶을 때 사용한다.
비밀번호 같이 문자열이 보이지 않아야 할 때 사용한다.
→ new JPasswordField( ) : parameter 안에 텍스트 숫자를 입력하면 박스의 크기를 지정해줄 수 있다.
→ getText( ) 사용하면 안된다.
대신, 1.2버전부터 getPassword( )를 사용한다.
(한 글자씩 의미가 있기에 char배열로 받고 String으로 바꿔서 사용한다.)
→ setEchoChar(char c) : 해당 문자열로 바꿔서 나타낼 수 있다.
장문을 입력할 때 사용한다.
→ new JTextArea(int 세로, int 가로) : parameter 안에 숫자를 입력하면 텍스트 박스의 크기를 지정해줄 수 있다.
차례대로 세로 길이, 가로 길이를 써주면 된다.
→ setLineWrap(boolean타입) : 글자로 자동 줄 바꿈을 해준다.
→ setWrapStyleWord(boolean타입) : 단어를 기준으로 줄 바꿈을 해준다.
스크롤이 필요할 때 사용한다.(생성 시 테두리가 생긴다.)
→ 보통 JTextArea 와 함께 사용한다.
→ setHorizontalScrollBarPolicy( ) : 수평(가로) 스크롤의 표시 정책을 설정해준다.
1) JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED
: 필요할 때만 스크롤이 생긴다.
2) JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS
: 스크롤이 항상 존재한다.(시작부터 존재한다.)
3) JScrollPane.HORIZONTAL_SCROLLBAR_NEVER
: 스크롤이 필요하더라도 생기지 않는다.
→ setVerticalScrollBarPolicy( ) : 수직(세로) 스크롤의 표시 정책을 설정해준다.
수평 스크롤 정책의 상수에서 HORIZONTAL 에서 VERTICAL 로 바꾸기만 하면 된다.
→ setUnitIncrement(int타입) : 스크롤바의 움직이는 단위를 설정해준다.(숫자가 클수록 빨라진다.)
→ setCaretPosition(int타입) : 텍스트 입력 컴포넌트에서 사용하는데, 정수 값으로 커서의 위치를 받아 해당 위치로 이동한다.
이를 이용하면 문자의 길이를 구해서 스크롤을 아래로 내려가도록 할 수 있다.
public class MyTextEx1 extends JFrame{
private JTextField tf;
private JTextArea ta;
private JPasswordField pf;
private JScrollPane sp;
public MyTextEx1() {
init();
setdisplay();
showFrame();
}
private void init() {
tf = new JTextField(20);
ta = new JTextArea(5, 20);
ta.setBorder(new LineBorder(Color.GRAY, 2));
ta.setLineWrap(true);
ta.setWrapStyleWord(true);
pf = new JPasswordField(20);
pf.setEchoChar('*');
sp = new JScrollPane(ta);
sp.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
sp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
}
private void setdisplay() {
JPanel pnlNorth = new JPanel(new FlowLayout(FlowLayout.LEFT));
JLabel lbltf = new JLabel("ID : ");
pnlNorth.add(lbltf);
pnlNorth.add(tf);
JPanel pnlCenter = new JPanel(new FlowLayout(FlowLayout.LEFT));
JLabel lblta = new JLabel("소개 : ");
pnlCenter.add(lblta);
pnlCenter.add(sp);
JPanel pnlSouth = new JPanel(new FlowLayout(FlowLayout.LEFT));
JLabel lblpw = new JLabel("PW : ");
pnlSouth.add(lblpw);
pnlSouth.add(pf);
add(pnlNorth, BorderLayout.NORTH);
add(pnlCenter, BorderLayout.CENTER);
add(pnlSouth, BorderLayout.SOUTH);
}
private void showFrame() {
setTitle("MyTextEx1");
pack();
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setResizable(false);
setVisible(true);
}
public static void main(String[] args) {
new MyTextEx1();
}
}
→ 위 코드를 실행하면 다음과 같은 결과가 나온다.
public class TextComponentEx extends JFrame {
public TextComponentEx(){
JTextField tf1 = new JTextField();
tf1.setText("normal");
JTextField tf2 = new JTextField();
tf2.setEditable(false);
tf2.setText("not editable");
tf2.setBackground(Color.WHITE);
JTextField tf3 = new JTextField();
tf3.setEnabled(false);
tf3.setText("not enabled");
setLayout(new GridLayout(0,1,0,10));
add(tf1);
add(tf2);
add(tf3);
setTitle("TextComponentEx");
setSize(400,300);
setLocation(100,100);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setResizable(false);
setVisible(true);
}
public static void main(String[] args) {
new TextComponentEx();
}
}
→ 위 코드를 실행하면 다음과 같은 결과가 나온다.