본문 바로가기
IT/Java

자바 Panel이란? 그리고 사용하는 방법

by flatsun 2019. 8. 2.
반응형

이번 글에서는 Panel 및 Panel을 사용하는 방법을 알아보자

일단 Panel역시 프레임과 동일하게 컴포넌트를 붙이는 용도로 사용되는데

 

프레임과 다른 점은

패널에 프레임에 패널을 붙이는 식으로 사용한다는 것이다

 

이제 패널을 사용하는 방법을 알아보자

프레임과 다른 점은 패널을 만들어서 패널에 컴포넌트를 붙인 뒤

그 패널을 프레임에 붙이는 방식으로 사용한다

 

패널 역시 프레임과 동일하게 만들고

크기와 위치를 설정해주고 레이아웃을 설정해주면 되는데

 

포인트는 패널은 프레임 안으로 들어갈 것이기 때문에

프레임의 크기를 넘어가거나 프레임 밖의 영역에 배치하려고 하면

잘려서 나오게 된다

 

내 경우에는 패널 두개를 각각 절반씩 나눠서 프레임 안에 넣으려고

setBounds를 저렇게 설정했다

 

다음으로는 컴포넌트인 버튼을 만든 뒤

이전에 만든 패널 두개에 붙여줬는데

 

Panel에 Button을 붙이고 Frame에 Panel을 붙이는 식으로 사용한다

 

전체 코드는 다음과 같다

package db;

import java.awt.Button;
import java.awt.Frame;
import java.awt.Panel;

public class FrameTest {
	public static void main(String[] args) {
		
		// 프레임 및 패널 만들기
		Frame f = new Frame();
		Panel p = new Panel();
		Panel p2 = new Panel();
		
		// 프레임 셋팅
		f.setTitle("TEST");
		f.setBounds(100, 100, 500, 500);
		f.setVisible(true);			
		
		// 프레임의 레이아웃 설정
		f.setLayout(null);				
		
		// 패널 셋팅
		p.setBounds(0, 0, 250, 250);
		p2.setBounds(250, 0, 250, 250);
		
		// 패널의 레이아웃 설정
		p.setLayout(null);
		p2.setLayout(null);
		
		// 컴포넌트 만들기
		Button btn = new Button("패널1 버튼");
		Button btn2 = new Button("패널2 버튼");
		Button btn3 = new Button("패널2 버튼2");
		
		// 컴포넌트 위치, 크기 설정
		btn.setBounds(50, 50, 100, 100);
		btn2.setBounds(50, 50, 100, 100);
		btn3.setBounds(150, 50, 100, 100);
		
		// 패널에 컴포넌트 붙이기
		p.add(btn);
		p2.add(btn2);
		p2.add(btn3);
		
		// 프레임에 패널 붙이기
		f.add(p);
		f.add(p2);
	}

}

이후 출력해 보니 프레임을 패널 두개가 나눠 갖고

패널 두개에 붙인 컴포넌트들이 프레임에 잘 붙어있는 것이 보인다

 

마지막으로 패널은 왜 사용하는가?

그냥 프레임에 다 붙이면 되는거 아님?

싶을텐데

 

간단한 화면일 경우에는 귀찮게 패널을 만들어 관리할 필요 없이

프레임에서 한번에 다 붙이는게 편한데

 

AWT나 Swing으로 네이버 같은 화면을 만든다고 생각해 보자

프레임 안에 컴포넌트를 붙여서 만드려면 몇십~몇백개는 붙여야 할 텐데

 

나중에 유지보수를 할 수 없지 않겠나

 

그러나 패널로

검색부분, 탭 부분, 로그인 부분, 광고 부분을 분할해서 만들면

 

이후에 로그인 부분에서 변경할 부분이 생기면

로그인 부분의 패널만 변경해주면 되는 등

 

관리하기가 훨씬 편해진다

 

어차피 AWT와 SWING으로는 학원 과제 정도의 간단한 화면만 만드므로

패널을 사용하지 않아도 된다

 

다만 Panel을 복잡한 화면을 만들 때는 필수로 사용해야

나중에 개발 시 머리 박살나는 상황을 피할 수 있다는 것이다

물론 AWT와 SWING으로 복잡한 화면을 만드는 일은 영원히 없겠지만..

 

 

반응형

댓글