프로그래밍

창 위의 창 대화창(다이얼로그) 띄우기 - 넷빈즈 IDE 스윙 프로그래밍 입문

할랑할랑 2007. 11. 16. 20:26
반응형

대화창(다이얼로그, Dialog)를 띄워야할 경우가 많습니다. 사용자에게 각종 질문을 하고 선택권을 부여하는 창입니다. FileDialog 처럼 미리 제공되는 창이야 그냥 new FileDialog 하고, setVisible(true)를 하면 됩니다. 직접 디자인한 JDialog도 기본 사용 방법은 동일합니다. JAVA NetBeans IDE를 사용할 경우 어떻게 간단하게 쓸 수 있는지 살펴봅시다.

사용자 삽입 이미지간단한 대화창 예시



Swing 구성요소에서 JDialog를 추가합니다.

사용자 삽입 이미지

해당 JDialog를 필요에 맞게 디자인 합니다. JFrame 폼 디자인이랑 크게 다를게 없습니다.

어떻게 사용하냐고요? 프로그래밍 코드를 통해서 해당 JDialog를 setVisible(true) 해주면 됩니다.

jDialog1.setVisible(true);

그런데 뭔가 이상하죠? setVisible로 창은 띄웠는데, 창이 최소화된 상태로 떠다닙니다.

사용자 삽입 이미지제목표시줄만 있는 황당한 다이얼로그 대화창

JDialog의 Property 창에서 직접 minimumSize 속성값을 정해주면 창이 더 이상 작아지지 않습니다. 더불어, 창 크기 조절을 마음대로 못하게 하려면 Property 속성에서 resizable을 꺼주면 됩니다

사용자 삽입 이미지

JDialog를 어떻게 끄냐고요? setVisible(false) 해주면 됩니다.

모달(modal) 속성이란게 있습니다. 대화창이 떠있을 경우, 부모 창에 접근을 못하도록 설정하는 겁니다. 흔히 "저장하시겠습니까?" 등의 경고 창이나, 검색 대화창(dialog)를 띄었을 경우, 배경에 있는 부모 창을 클릭해도 경고 음향만 나오고 창 전환이 되지 않는데, 이것이 바로 모달 속성의 창입니다. 웬만하면 대부분의 대화창은 모달 속성을 켜두는 것이 기능상 올바르게 작동하게 만드는 방법일 것입니다.

JDialog의 Property에서 modal 속성을 찾아서 true(체크표시)로 바꿔주면 모달 속성이 됩니다.

사용자 삽입 이미지모달 속성. true로 해봅시다

모달 창으로 띄웠으면, 해당 JDialog를 setVisible(false) 하지 않는 한은 다른 작업을 할 수 없게 만듭니다.

JDialog와의 통신은 어떻게하나? JDialog에서 선택한 문자열 등에 대한 통신은 어떻게 하냐고요? 그냥 JFrame에 클래스 변수를 두는 객체지향적이지 않은 프로그래밍 방식을 써도 되고, JDialog 자체 JTextField 값만 쓰는 경우에는 굳이 새로운 변수를 선언할 필요없이 JFrame 클래스 어디서든 해당 JTextField를 따로 제어할 수 있습니다. FileDialog 같은건 GetFile()등의 메소드가 별도로 있어서 선택한 파일명이 있는지 없는지 알 수 있었지만, 직접 만드신 JDialog의 선택지에 대해서는, 따로 변수를 만들어서 판별하도록 하는게 빠르고 확실한 방법인 것 같습니다. 좀 더 윈도우 프로그래밍 답게 접근하는 방법도 있을텐데, 잘 모르겠네요.


※ 관련글
- 1. 넷빈즈 설치 및 기본 프로젝트 작성
- 2. 간단한 계산기 제작 및 JAVA API 찾는법
- 3. 간단한 메모장
- 간단한 컴파일 오류 잡기 - try catch 및 import가 필요한 경우
- 프로그램에서 거꾸로 다이어그램 얻기
반응형