본문 바로가기

Today I Learned

JAVA LayoutManager(배치관리자) : FlowLayout, GridLayout

FlowLayout은 컴포넌트를 행(row) 방향으로 배치하는 레이아웃이다. 

컴포넌트들이 배치되는 공간이 부족하면 자동으로 아래로(다음 줄로) 넘어간다.

		//Flow Layout = places components in a row, sized at their preferred size.
		//If the horizontal space in the container is too small,
		//the FlowLayout class uses the next available row.

		frame.setLayout(new FlowLayout()); //set FlowLayout

레이아웃은 배치하려는 컴포넌트들의 상위 객체인 부모 객체에 등록하게 된다.

flowLayout은 아래와 같은 메소드를 가지고 있다. (10,10은 여백을 주는 옵션이다)

패널을 만들어서 안에 버튼 9개를 flowLayout으로 배치한 모습이다.

		panel.add(new JButton("1"));
		panel.add(new JButton("2"));
		panel.add(new JButton("3"));
		panel.add(new JButton("4"));
		panel.add(new JButton("5"));
		panel.add(new JButton("6"));
		panel.add(new JButton("7"));
		panel.add(new JButton("8"));
		panel.add(new JButton("9"));
		
		frame.add(panel);
		frame.setVisible(true);

FlowLayout으로 완성된 버튼의 모습

 

GridLayout은 다음과 같은 특징을 가진다

-셀 내에서 사용 가능한 모든 공간을 차지한다.
-각 셀이 동일한 크기이다.

	public static void main(String[] args) {
		
		//GridLayout = places components in a grid of cells.
		//Each component takes all the available space within its cell,
		//and each cell is the same size
		
		JFrame frame = new JFrame();
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setSize(500,500);
		frame.setLayout(new GridLayout());
		
		frame.add(new JButton("1"));
		frame.add(new JButton("2"));
		frame.add(new JButton("3"));
		frame.add(new JButton("4"));
		frame.add(new JButton("5"));
		frame.add(new JButton("6"));
		frame.add(new JButton("7"));
		frame.add(new JButton("8"));
		frame.add(new JButton("9"));
		
		frame.setVisible(true);

	}

frame에 버튼 9개를 넣고 GridLayout을 사용하면 아래와 같은 화면이 나타난다.

모든 컴포넌트가 동일한 크기로 모든 공간을 차지하도록 배치된 것을 확인할 수 있다.

 

GridLayout은 row와 column을 설정할 수 있다.

frame.setLayout(new GridLayout(3,3));

 

3행 3열로 버튼이 배치된 모습이다.

 

여기서 잠시 헷갈려서 찾아봤는데,

가로는 행을 뜻하며 row, 횡, horizontal 모두 같은 말이다.

세로는 열을 뜻하며 column, 종, vertical 모두 같은 말이다.

 

frame.setLayout(new GridLayout(3,3,10,10));

위와 같이 마진을 줄 수도 있다.

만약 3행3열 형태로 9개의 버튼이 배치된 위의 상태에서 한개의 버튼을 추가한다면

위와 같이 버튼이 배치되게 된다.

'Today I Learned' 카테고리의 다른 글

자바 GUI 기초 - JButton  (0) 2022.11.06
JAVA GUI : Create New Window  (0) 2022.11.06
JAVA LayoutManager(배치관리자) : BorderLayout  (0) 2022.11.05
자바 GUI 기초 - JFrame, JLabel, JPanel  (0) 2022.10.29
File Class - write/read  (0) 2022.10.29