2011년 12월 10일 토요일

스윙으로 프레임 만들기(JFrame)




오늘은 스윙의 JFrame에 대해서 공부할텐데 그동안 강의를 쭈욱 본 이들은 알겠지만 그냥 맨 처음에 써놓고 시작하는거라고 무의식적으로 써왔을거라 본다. 이미 대부분 아는 내용이겠지만 오늘은 그동안 미처 설명하지 못한 아니, 아 그렇지 그런것도 컨트롤이 가능하구나라는 말이 나오도록 조금 아주 쪼금 깊이 들어가보도록 하겠다.^^

JFrame은 최상위 탑레벨 클래스 중 하나로 스윙에서는 항상 자연스럽게 쓰는 클래스 중에 하나이며 창의 제목과 테두리의 사이즈를 컨트롤하는데 주로 써온것을 여러분은 기억하리라 본다. 바로 소스를 보면서 그동안 다루지 않았던 부분을 맛배기(?)로 공부해 보기로 하겠다. 그동안 배운거 재방송만 하면 엄청난 비난(?)이 쏟아질 것이기 때문에 울며겨자 먹기로 다른거 조금 건드려보기로 결정한 것이니만큼 군말없이 따라오기 바란다.ㅎㅎ


프레임 즉 윈도우 창을 보면 오른쪽 구석에 미니마이즈 하는 즉 최소화 버튼이 있고 최대화 버튼 그리고 x 표시인 닫힘 버튼이 있는 것을 기억할 것이다. 거기서 닫힘 버튼을 눌렀을때 크게 네가지로 분류해서 각기 반응을 입맛에 맞게 만들어 볼수가 있다. 필자가 그동안 계속 써왔던 EXIT 어쩌구 하는 것 말고도

//EXIT_ON_CLOSE (defined in the JFrame class)
//DO_NOTHING_ON_CLOSE
//HIDE_ON_CLOSE (the default for JDialog and JFrame)
//DISPOSE_ON_CLOSE (the default for JInternalFrame)

위와 같은 명령들이 있는데 눌리면 반응없게도 만들수 있고 누르면 닫히긴 하는데 꺼지지 않고 계속 숨은채로 메모리에 상주하게 만들수도 있는 그런 기능들이 있다. 자세한 내용은 필자가 ( )를 사용하며 유창한 영어(?)로 표기해 놓았으니 알아서 번역해보기 바란다.ㅎㅎ

그리고 창이 뜰때 사이즈뿐만 아니라 그 창이 맨처음에 화면에 나타나는 위치까지도 지정할수가 있다. 소스를 실행해보면 알겠지만 위의 소스에서는 중앙에다가 배치하라고 명령해 놓은 것이니 정말 그런지 각자 실험해 보자.

그럼 끝내기 전에 여기서 문제 하나를 내보겠다. 소스를 보면 닫는 명령을 여기선 쓰지 않았다. 그럴 경우 위의 네가지 닫는 명령중 자바는 어떤 것을 디폴트로 놓고 작동시키게 되는 과연 어떤 것일까? ㅎㅎ 실행해보면 알것이고 괄호안의 설명을 잘 읽어보면 자동적으로 알게 될것이다. 소스에 답을 써놨는데도 못찾는 이들은 없으리라 믿는다.ㅎㅎ 숙제니 알아서 파악하기 바라고 마지막으로 노파심에 한마디 더하자면, 위의 소스를 실행했는데 창을 닫았으나 완전히 닫히지 않을 것이므로 다시 프로그램을 작동하는데 애로(?) 많을 것이다. 그런 이들을 위해 특수 비법을 이 시간에 전수해 주겠다.^^

윈도우의 작업 관리자로 들어가면 프로세스에서 java.exe라는 파일을 볼수 있을 것이다. 이것을 꺼주면 무리없이 원상태로 돌아갈 것이다. 우리는 자바를 배우고 있다. 당근 자바 실행파일을 무력화시키면 해결되는 것이다. 지금 필자의 말이 이해가 되지 않고 저거 도대체 무슨 이야기 하고 있는거야 하는 이들이 있다면 소스를 공부하고 실행해서 직접 겪어보다보면 저절로 알게 될것이리라 생각한다. 그럼 다음 시간에는 스윙의 대부분 프로그램에서 사용되고 일반적으로 쓰이는 컨테이너들에 대해서 공부할 것인데 다 배운 내용중 하나이니 무슨 클래스인지 한번쯤 생각해 보기 바라면서 오늘은 이만하겠다.^^