[Java] 2020.11.19. day_22 복합레이아웃, 수동배치, Swing Component사용법, Component종류

2020. 11. 19. 17:59Web_Back-end/Java SE

◎ 복합 레이아웃

  복합 레이아웃
  제공되는 Layout Manager를 사용하여 복잡한 디자인을 만들 때
  1 Frame의 Layout은 BorderLayout 설정
  2 North영역에 3개의 컴포넌트가 배치
(라벨, 텍스트필드, 버튼 - Container Component에 배치하여 North영역에 Container Component하나를 배치한다)
  3 Center영역에 textArea 배치
  BorderLayout은 하나의 영역에 하나의 컴포넌트가 고유크기를 무시하고 배치된다
JFrame Window Component : BorderLayout
JPanel Container Component : FlowLayout

 

○ 수동배치

  수동배치
  제공되는 Layout Manager를 사용하지 않고 개발자가 배치되는 컴포넌트의
크기와 위치를 직접 설정하는 배치방법
장점 배치관리자가 제공하지 않는 복잡한 디자인을 만들 때
단점 코딩량이 많아진다 
좌표와 크기계산을 해야한다
  수동배치 방법
  1 자동배치관리자를 해제한다
setLayout( null ); //new 배치관리자_설정, null_해제
  2 컴포넌트를 생성하고 배치되는 위치와 크기 설정
위치설정 : setLocation( x, y );
크기설정 : setSize( w, h );
위치와 크기를 한번에 설정 : setBounds( w, y, w, h );

- 위치설정은 JFrame에 사용되면 모니터 왼쪽 상단이 시작점이고
Container Component나 Component에 사용되면 배치되는 JFrame의 왼쪽 상단이 시작점이 된다

○ Swing Component 사용법

   Swing Component 사용법
이미지 ImageIcon 클래스로 이미지를 손쉽게 사용할 수 있다
Component가 Icon을 매개변수로 정의하고 있으면, ImageIcon을 생성하여 넣어줄 수 있다
사용법 1 ImageIcon 객체화 : 이미지파일의 경로는 절대경로( c:/ )를 사용한다
ImageIcon ii = new ImageIcon("이미지파일의 경로");
  2 이미지를 사용할 컴포넌트에서 이미지아이콘 객체를 설정
2-1 생성자를 사용
JButton jb = new JButton( ii ); //ii : 아이콘이미지 객체
2-2 method 사용 : setIcon();
JButton jb = new JButton(); //아이콘이 없는 버튼생성
jb.setIcon( ii ); //method를 사용하여 이미지설정

○ Component 종류

  Component 종류
JLabel 이름표. 컴포넌트의 정보제공.

JLabel  jl = new JLabel(“문자열”);
JTextField 한줄의 문자열을 입력받을 때

JTextField jtf = new JTextField(); //보여주는 글자 수가 0글자
JTextField jtf = new JTextField( 5 ); //대문자 'A'기준 5글자를 보여주는 크기
JTextField jtf = new JTextField( "문자열" ); //문자열이 들어간 상태로 제공
JPasswordField 반향문자 (EchoChar) 를 사용하여 한 줄의 문자열을 입력 받을 때
반향문자. 입력한 문자 대신 설정한 문자가 표현되는 것

1) 생성
JPasswordField jpf = new JPasswordField(); //크기설정가능
//생성된 JPasswordField는 한글입력이 안된다
2) 반향문자를 설정할 수 있다
jpf.setEchoChar( '*');
JTextArea 여러줄의 문자열을 입력할 때
java.awt.TextArea : ScrollBar가 포함되어 제공
javax.swing.TextArea : ScrollBar가 별도로 제공

JTextArea에 ScrollBar를 제공하기 위해 Container Component

사용법)
1. JTextArea를 생성)
JTextArea jta = new JTextArea();

2. ScrollBar를 가져야하는 컴포넌트를 위해 JScrollPane이 제공
스크롤 바를 가져야할 컴포넌트를 생성하고 JScrollPane과 Has a 관계설정
JScrollPane jsp = new JScrollPane( jta );

3. 배치
add( jsp );
CheckBox 여러 개의 선택을 해야할 때

JCheckBox jcb = new JCheckBox( "메세지" ); //체크가 해제된 상태로 제공
JCheckBox jcb = new JCheckBox( "메세지" , boolean ); //체크여부
JRadioButton 여러개 중 하나를 선택해야할 때
-ButtonGroup에 포함되어야 여러개중 하나만 선택 가능한 상태

JRadioButton jrb = new JRadioButton( "메세지" ); //체크가 해제된 상태로 제공
JRadioButton jrb = new JRadioButton( "메세지", boolean ); //체크여부
-라디오버튼은 버튼 그룹으로 묶여야 하나의 라디오버튼만 선택가능
ButtonGroup bg = new ButtonGroup();
bg.add( 라디오버튼 객체 );