[Java] java.awt 패키지 - 배치 관리자(Layout Manager)

chael_lo·2021년 5월 21일
0

Java

목록 보기
37/52

배치 관리자

모든 컨테이너에는 전달된 컴퍼넌트를 자동 부착하는 기능을 제공하는 배치 관리자가 존재한다.
컨테이너에 컴퍼넌트를 배치할 때 컴퍼넌트의 크기를 출력하고, 위치를 자동으로 변경하는 기능을 제공하는 클래스다.
컨테이너에는 기본 배치 관리자가 존재하며 컨테이너의 배치 관리자는 변경 가능하다.

BorderLayout

컴퍼넌트를 동,서,남,북,중앙으로 구분하여 배치하는 배치 관리자 클래스다.
add() 메소드 호출시 위치를 지정하여 컴퍼넌트를 배치한다.
Frame, Window, Dialog 등의 컨테이너는 BorderLayout를 기본 배치 관리자로 설정한다.
Frame의 기본 배치 관리자는 BorderLayout이므로 배치 관리자 변경은 무의미하다.

버튼 5개를 만들어 동,서,남,북, 가운데로 배치하기 - BorderLayout를 기본 배치관리자로 설정할 경우

public class BorderLayoutApp extends Frame {
	private static final long serialVersionUID = 1L;

	public BorderLayoutApp(String title) {
		super(title);
        
		//Frame의 기본 배치 관리자는 BorderLayout이므로 배치 관리자 변경은 무의미
                //setLayout 생략
        
		Button button1=new Button("버튼-1");
		Button button2=new Button("버튼-2");
		Button button3=new Button("버튼-3");
		Button button4=new Button("버튼-4");
		Button button5=new Button("버튼-5");
		
		add(button1, BorderLayout.EAST);
		add(button2, BorderLayout.WEST);
		add(button3, BorderLayout.SOUTH);
		add(button4, BorderLayout.NORTH);
		add(button5, BorderLayout.CENTER);
		
 		setBounds(600, 100, 400, 400);
		setVisible(true);
	}	
	
	public static void main(String[] args) {
		new BorderLayoutApp("BorderLayout");
	}
}

출력결과

FlowLayout

FlowLayout: 컴퍼넌트를 왼쪽에서 오른쪽으로 차례대로 배치하는 배치 관리자 클래스다.
배치되는 컴퍼넌트가 컨테이너의 크기를 벗어날 경우 자동으로 아래로 이동하여 배치한다.
Panel, Applet 등의 컨테이너는 FlowLayout를 기본 배치 관리자로 설정한다.

버튼 5개를 만들어 자동으로 배치 하기 - FlowLayout를 기본 배치관리자로 설정할 경우

public class FlowLayoutApp extends Frame{
private static final long serialVersionUID = 1L;
     //FlowLayoutApp 생성자 
    public FlowLayoutApp(String title) {
        super(title);

        //프레임의 배치관리자를 FlowLayout으로 변경
        setLayout(new FlowLayout());

        Button button1=new Button("버튼-1");
        Button button2=new Button("버튼-2");
        Button button3=new Button("버튼-3");
        Button button4=new Button("버튼-4");
        Button button5=new Button("버튼-5");

        add(button1);
        add(button2);
        add(button3);
        add(button4);
        add(button5);

        setBounds(600,100,400,400);
        setVisible(true);
    }
    
    //main 메서드
    public static void main(String[] args) {
        new FlowLayoutApp("FlowLayout");
    }
}

출력결과

GridLayout

컴퍼넌트를 행과 열을 이용하여 배치하는 배치 관리자 클래스한다.
행을 우선으로 컴퍼넌트 배치한다.
버튼 6개를 만들어 3행 2열로 배치하기 - GridLayout를 기본 배치관리자로 설정할 경우

public class GridLayoutApp extends Frame{
	private static final long serialVersionUID = 1L;

	public GridLayoutApp(String title) {
		super(title);
		
		
		//프레임의 배치 관리자를 GridLayout으로 변경
		//GridLayout 인스턴스는 행과 열을 설정하는 생성자로 인스턴스 생성
		setLayout(new GridLayout(3,5));//3행 2열로 컴포넌트를 배치하겠다.
		
		Button button1=new Button("버튼-1");
		Button button2=new Button("버튼-2");
		Button button3=new Button("버튼-3");
		Button button4=new Button("버튼-4");
		Button button5=new Button("버튼-5");
		Button button6=new Button("버튼-6");
		
		add(button1);
		add(button2);
		add(button3);
		add(button4);
		add(button5);
		add(button6);
		
		setBounds(600,100,400,400);
		setVisible(true);
	}
	
	public static void main(String[] args) {
		new GridLayoutApp("GridLayout");
	}
}

출력결과

profile
천천히 꾸준히

0개의 댓글