Notice
Recent Posts
Recent Comments
Link
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Archives
Today
Total
관리 메뉴

코딩 블로그

[Java] Swing GUI 제작을 좀 더 용이하게 해 줄 SimpleGridBagLayout 본문

기타 코딩

[Java] Swing GUI 제작을 좀 더 용이하게 해 줄 SimpleGridBagLayout

14253647586970 2019. 6. 20. 20:37

소개

이 레이아웃은 SimpleGridBagLayout이라는 이름으로 GridLayout의 특징과 GridBagLayout의 특징을 적절히 조합하여 사용하기 쉽고 편리하게 만들어진 것 레이아웃입니다. GridBagLayout에서 지정할 수 있는 설정들이 너무 많아서 사용자의 입장에서는 간단한 기능만을 사용할 수가 없었습니다.

그래서 저는 GridLayout과 비슷하게 동작하며 '컴포넌트가 차지하는 칸 수를 지정할 수 있는' 레이아웃 매니저를 직접 만든 것입니다.

레이아웃 관리자의 장점

이 레이아웃 관리자를 사용하면 프로그램을 손쉽게 제어할 수 있습니다. 예를 들어 컨테이너의 크기가 달라지거나 뭉개지고, 길쭉해져도 그 비율에 맞게 컴포넌트를 어울리는 위치에 배치할 수 있습니다.

높이와 너비가 일정할 때
너비가 더 길 때

사용자가 위와 같은 모습을 만드는 것을 자동으로 실행해준다는 것이죠. 이 장점은 GridLayout에도 적용됩니다. 하지만 GridLayout에서 바꿀 수 없는 게 있죠. 넣어야 하는 컴포넌트는 무조건 순서대로만 들어가고, 컴포넌트가 여러 칸을 차지하지도 못하게 합니다. 아마 제 레이아웃 관리자는 C#의 TableLayoutPanel 등을 사용해보셨으면 아실 겁니다.

파란색 컴포넌트는 Grid의 2칸을 차지하고 있습니다.

이런 모습입니다. 아무래도 기존의 GridLayout보다 자유롭게 조작하면서도 GridBagLayout만큼 사용이 복잡하지도 않으니 간단한 GUI를 개발하는 시간이 매우 줄어들 것으로 생각합니다.

사용 방법을 알려 주세요

IDE에서 Jar 파일을 빌드 경로에 추가하신 뒤 아래의 코드를 따라주세요. 주석을 통해 설명해드립니다.

package kr.userapps.test;

import java.awt.Color;

import javax.swing.JFrame;
import javax.swing.JPanel;

import kr.userapps.swing.SimpleGridBagConstraints;
import kr.userapps.swing.SimpleGridBagLayout;

public class Main {

	public static void main(String[] args) {
		JFrame frame = new JFrame("Test window"); //일반적인 창 생성
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		JPanel panel = new JPanel(); //배경 패널 생성
		panel.setBackground(Color.red); //배경색 붉게
		panel.setLayout(new SimpleGridBagLayout(5, 5)); //SimpleGridBagLayout을 5x5 사이즈로 생성
		
		JPanel panel2 = new JPanel(); //파란색 패널
		panel2.setBackground(Color.blue);
		panel.add(panel2, new SimpleGridBagConstraints(0, 0, 2, 1)); // (0, 0) 위치에서 가로 2칸, 세로 1칸을 차지하게 생성
		
		panel2 = new JPanel(); //녹색 패널
		panel2.setBackground(Color.green);
		panel.add(panel2, new SimpleGridBagConstraints(4, 4, 1, 1)); // (4, 4) 위치에서 가로 1칸, 세로 1칸을 차지하게 생성
		
		frame.setContentPane(panel);
		
		frame.setSize(500, 500);
		frame.setVisible(true);
	}

}

아무래도 자바로 이 글을 볼 분이라면 충분히 아셨겠죠?

new SimpleGridBagLayout(높이, 너비)를 통해 새로운 레이아웃 객체를 만들 수 있고

new SimpleGridBagConstraints(x, y, 너비, 높이)를 통해 Constraints?를 지정하여 특정한 위치에 가 있게 합니다.

추가로, 이 레이아웃은 Constraints를 지정하지 않으면 컴포넌트 추가가 불가능합니다!

다운로드!

SimpleGridBagLayout.jar
0.01MB

조용히 드릴게요. 아래 라이선스만 꼭 읽고 사용해주세요.

수정: 죄송합니다. 어제 올린 파일에서 행과 열이 반대로 작동하게 만들었네요. 수정 버전으로 대체했습니다.

거의 끝

이상으로 레이아웃 소개 글을 마치겠습니다. 많은 분들이 활용하여 편한 개발 하셨으면 합니다. 본 레이아웃 라이브러리는 오픈 소스가 아니며 컴파일된 JAR를 디컴파일하는 것은 저작권 위반 행위이고, 재배포는 이 글로 향하는 링크와 아래 라이선스 테이블과 함께 자유롭게 가능함을 알려드립니다.

 

라이센스
오픈 소스 X
재배포 O, 이 글로 향하는 링크 + 이 테이블과 함께
디컴파일 X
프로그램 내 사용 어떤 목적으로든 허용
이용요금 무료
유상 판매 절대 금지
변경  금지
기타 모든 행위 X(요청 시 허락 하에 가능, 이 테이블에 추가할 것임)

단, 본 게시물에 대한 저작권은 업로드 시 지정한 라이선스(CCL)가 적용됩니다.

Comments