JText 에 대해서

예숑·2024년 1월 13일
0

JAVA - GUI

목록 보기
5/8
post-thumbnail

⭐️여러 JText

💜JTextField

단문을 입력할 때 사용한다.

new JTextField( ) : parameter 안에 숫자를 입력하면 텍스트 박스의 크기를 지정해줄 수 있다.

setText( ) : parameter 안에 원하는 문자열을 넣으면 텍스트 박스 안에 내가 원하는 문자열을 넣을 수 있다.
setEditable(boolean b) : 사용자가 문자를 입력할 수 없지만 드래그는 가능하다. (편집 불가 상태)
setEnabled(boolean b) : 사용자가 문자를 입력할 수도 없고 드래그 할 수도 없다. (비활성화 상태)

selectAll( ) : 텍스트 입력 컴포넌트의 내용을 전체 선택하는데 사용한다.
requestFocus( ) : 특정 컴포넌트에 포커스를 주고 싶을 때 사용한다.

💜JPasswordField

비밀번호 같이 문자열이 보이지 않아야 할 때 사용한다.

new JPasswordField( ) : parameter 안에 텍스트 숫자를 입력하면 박스의 크기를 지정해줄 수 있다.
→ getText( ) 사용하면 안된다.
대신, 1.2버전부터 getPassword( )를 사용한다.
(한 글자씩 의미가 있기에 char배열로 받고 String으로 바꿔서 사용한다.)

setEchoChar(char c) : 해당 문자열로 바꿔서 나타낼 수 있다.

💜JTextArea

장문을 입력할 때 사용한다.

new JTextArea(int 세로, int 가로) : parameter 안에 숫자를 입력하면 텍스트 박스의 크기를 지정해줄 수 있다.
차례대로 세로 길이, 가로 길이를 써주면 된다.

setLineWrap(boolean타입) : 글자로 자동 줄 바꿈을 해준다.
setWrapStyleWord(boolean타입) : 단어를 기준으로 줄 바꿈을 해준다.

💜JScrollPane

스크롤이 필요할 때 사용한다.(생성 시 테두리가 생긴다.)

→ 보통 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();
	}
}

→ 위 코드를 실행하면 다음과 같은 결과가 나온다.

0개의 댓글