LayoutManager를 사용하면 자바 스윙의 컴포넌트들의 좌표를 자동으로 계산하여 배치해준다.
1. Border Layout
BorderLayout은 컴포넌트들을 NORTH, SOUTH, WEST, EAST, CENTER 방향으로 배치할 수 있으며
가장 많이 사용되는 레이아웃이기도 하다.
사용하기 위해서는 아래와 같이 코드를 작성하면 된다.
public class BorderLayoutEX {
public static void main(String[] args) {
//BorderLayout = A BorderLayout places components in five area
//NORTH, SOUTH, WEST, EAST, CENTER
//all extra space is placed in the center area
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500,500);
frame.setLayout(new BorderLayout(10, 10));
frame.setVisible(true);
JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();
JPanel panel3 = new JPanel();
JPanel panel4 = new JPanel();
JPanel panel5 = new JPanel();
panel1.setBackground(Color.red);
panel2.setBackground(Color.green);
panel3.setBackground(Color.yellow);
panel4.setBackground(Color.magenta);
panel5.setBackground(Color.blue);
panel1.setPreferredSize(new Dimension(100,100));
panel2.setPreferredSize(new Dimension(100,100));
panel3.setPreferredSize(new Dimension(100,100));
panel4.setPreferredSize(new Dimension(100,100));
panel5.setPreferredSize(new Dimension(100,100));
}
먼저 예제를 위하여 최상위 프레임인 JFrame을 만들고 사이즈를 500,500으로 설정하였다.
레이아웃을 사용하기 위해서는 setLayout()키워드를 사용한다.
frame.setLayout(new BorderLayout(10,10));
괄호 안의 10,10은 마진(여백)을 설정해준 것이다.
다섯 개의 다양한 색깔의 패널을 만들고
frame에 add 키워드로 컴포넌트를 자식으로 등록하면서
동시에 BorderLayout으로 자식 컴포넌트들의 위치를 등록해준다.
//set components
frame.add(panel1, BorderLayout.NORTH);
frame.add(panel2, BorderLayout.WEST);
frame.add(panel3, BorderLayout.EAST);
frame.add(panel4, BorderLayout.SOUTH);
frame.add(panel5, BorderLayout.CENTER);
그러면 위와 같이 패널이 추가된 것을 확인할 수 있다.
여기서 중요한 점은 부모 객체에 setLayout을 하고,
자식 객체에 NORTH, SOUTH, WEST, EAST, CENTER 위치를 등록해준다는 점이다.
CENTER에는 파란색의 panel5가 위치하는데,
이 안에도 추가로 자식 컴포넌트들을 배치할 수 있다.
아래와 같이 sub panel 다섯 개를 추가하고
panel5에 setLayout으로 BorderLayout을 적용한다. 이제 panel5는 부모 객체이다.
//--------------------sub panels-----------------------
JPanel panel6 = new JPanel();
JPanel panel7 = new JPanel();
JPanel panel8 = new JPanel();
JPanel panel9 = new JPanel();
JPanel panel10 = new JPanel();
panel6.setBackground(Color.black);
panel7.setBackground(Color.darkGray);
panel8.setBackground(Color.gray);
panel9.setBackground(Color.lightGray);
panel10.setBackground(Color.white);
panel5.setLayout(new BorderLayout());
panel6.setPreferredSize(new Dimension(50,50));
panel7.setPreferredSize(new Dimension(50,50));
panel8.setPreferredSize(new Dimension(50,50));
panel9.setPreferredSize(new Dimension(50,50));
panel10.setPreferredSize(new Dimension(50,50));
add 키워드로 panel5에 panel6,panel7,panel8,panel9,panel10을 자식 객체로 등록한다
panel5.add(panel6, BorderLayout.NORTH);
panel5.add(panel7, BorderLayout.SOUTH);
panel5.add(panel8, BorderLayout.WEST);
panel5.add(panel9, BorderLayout.EAST);
panel5.add(panel10, BorderLayout.CENTER);
그러면 위와 같이 CENTER에 해당하는 panel5에 패널 컴포넌트 다섯 개가 추가된 것을 확인할 수 있다.
가운데에 있는 panel10에 한번 더 추가할 수도 있다.
BorderLayout은 굉장히 다양한 툴에 사용되는 레이아웃 방식이기 때문에 자세히 알아두면 좋을것 같다는 생각이다.
'Today I Learned' 카테고리의 다른 글
JAVA GUI : Create New Window (0) | 2022.11.06 |
---|---|
JAVA LayoutManager(배치관리자) : FlowLayout, GridLayout (0) | 2022.11.05 |
자바 GUI 기초 - JFrame, JLabel, JPanel (0) | 2022.10.29 |
File Class - write/read (0) | 2022.10.29 |
HTTP 1.1) http통신, stateless, mime 타입 (0) | 2022.01.13 |