개발 공부/자바(Java)

[자바] 윈도우 빌더의 디자인 창에서 처음에 알아야할것들

가이윤 2021. 11. 10. 16:17

이번에 자바로 리듬게임 프로젝트를 하면서 윈도우빌더를 사용했는데, 하면서 사소하게 알게된 것들을 정리해야겠다.

내가 나중에 잊으면 다시 참고하기 위해 자세하게 작성한다.

윈도우 빌더의 디자인 창에서 작업하다보면 컴포넌트나 패널들을 계층상 어떤 위치에 두느냐에 따라 보이기도 하고 안 보이기도 한다.

나는 이클립스 한글화를 적용해서 메뉴명이 한글로 표시된다.

 

프로젝트를 만든 상태에서 '기타' 에 들어간다.

 

WindowBuilder의 Swing Designer에서 JFrame을 선택한다.

Application Window를 사용해도 상관은 없다.

패키지 이름과 클래스 이름을 설정해서 만들어준다.

Design 탭을 클릭해본다. 

1번은 Frame 부분이고 2번은 contentPane으로 Panel이다. 

그런데 우리가 사용하려는 JPanel과 기능은 비슷한데 약간 다르다.

일단 contentPane은 1번인 프레임 크기가 변하면 같이 변한다. 

하지만 JPanel을 새로 삽입해서 1번 프레임 크기를 변경해보면 새로 삽입한 패널은 크기 변함이 없다.

그리고 이거 말고 여러 가지 다른 점이 있는데, 좀 복잡하기도 하고 굳이 알 필요 없어서 패스.. 그냥 편하게 둘 다 프레임 속성으로 보고 작업하면 된다.

작업을 할 때는 항상 contentPane 밑에 JPanel을 넣어서 작업을 시작한다.

JPanel을 선택해서 1번으로 드래그 앤 드랍 해도 되고 2번으로 해도 된다.

그런데 화면을 보면 원하는 곳에 둘 수가 없게 되어있는데, 이건 프레임과 패널은 기본적으로 Layout이 코드에서 보면 나와있지만 BorderLayout으로 되어있다.

때문에 자기가 원하는 위치에 두고 싶으면 Layout을 바꿔줘야한다.

 

Layouts에서 Absolute layout을 선택해서 넣어준다.

코드상에서는 setLayout(null) 로 하면 된다.

다음으로도 똑같이 JPanel을 넣고 Absolute layout을 넣어준다.

항상 컨테이너(Container)에 속하는 프레임, 패널 등에는 우선적으로 layout 설정을 위와 같이 해주고 작업을 시작하는게 좋다.

패널을 클릭하면 contentPane에 아무곳에 나둘수 있다.

처음에는 크기가 표시된 것처럼 작게 보인다.

우선 위치를 contentPane(하얀색 바탕) 크기와 똑같이 만들어주기 위해 contentPane의 모서리 끝에 위치시킨다.

다음에 크기를 늘려서 맞춰준다. 그리고 Absolute layout을 추가한다.

 

패널은 만약 setVisible 메소드를 활용해서 GUI로 화면전환을 구현하려면 새로운 패널(2번)을 왼쪽 계층상에 1번 패널 밑이 아니라contentPane 밑에 둬야한다. 왜냐하면 1번 패널 밑에 2번 패널을 두면 2번 패널이 1번 안에 속하기 때문에 1번 패널을 setVisible(false) 해버리면 2번 패널도 안 보이게 된다.

한 번 이미 생성한 것은 트리 계층상에서는 드래그 앤 드랍으로 이동이 되지 않는다.(이유는 모르겠다) 오른쪽 마우스를 클릭해서 메뉴로 순서를 바꿔줄 수 있다.

panel_1을 panel 위에 두고 싶으면 Bring Forward를 클릭하면 된다. 맨 밑에 있는 것을 맨 위로 보내고 싶으면 Bring to Front 를 클릭하면 된다.

 

패널 위치가 바뀐것을 알 수 있다.

여기서 알게된 것이 (위 사진과 같은)디자인창의 계층상에서나 코드상에서 위에 있는 것이 화면에서 제일 먼저 보인다. 예를 들어 위 사진처럼 panel_1이 panel보다 위에 있기 때문에 패널 크기가 같다면 아래에 있는 panel은 실행했을때나 디자인 창에서 보이지 않게 된다.

 

 위의 사진처럼 panel이 panel_1보다 아래에 위치하기 때문에 panel 에 추가된 버튼이 화면상에서 보이지 않는다.

그래서 디자인 창에서 panel에 오른쪽 GUI로 보면서 추가하고 싶으면 잠시 panel을 panel_1 위에 위치시키고 작업해야한다. 코드에서도 똑같다.

참고로 drawImage 같은 paint와 관련된 메소드에서는 이것들과 다르게 코드창에서 밑에 있는 (버튼 등의)코드가 위에 있는 코드보다 화면에서 먼저 보인다. 그리고 코드나 디자인창에서 추가된 버튼과 같은 컴포넌트들은 drawImage 같은 메소드들에 의해 그려진 것보다 먼저 보이게 된다.

 

[자바] 이클립스(eclipse)에서 Window Builder(윈도우 빌더) 활용해서 GUI 만들기

 

[자바] 이클립스(eclipse)에서 Window Builder(윈도우 빌더) 활용해서 GUI 만들기

학교에서 자바(Java)로 프로그래밍 수업을 하면, GUI 관련 내용도 배우는 경우가 많습니다. 그리고 과제나 시험 프로젝트로 GUI를 활용해서 프로그램을 만들어 와야하는 경우가 있을겁니다. GUI를

hansol94.tistory.com

[자바] 윈도우빌더에서 패널 클래스로 작업 분리해서 하는 법

 

[자바] 윈도우빌더에서 패널 클래스로 작업 분리해서 하는 법

GUI로 프로젝트를 만들기 위해서 윈도우 빌더를 사용하는데, 하나의 클래스에 패널, 버튼 등을 다 넣으면서 작업하면 코드가 너무 길어진다. 특히 이번에 리듬게임 강의를 보면서 느낀점이 GUI 부

hansol94.tistory.com