오늘부터는 일반적으로 스윙에서 널리 사용되는 콤포넌츠들을 모아서 차례차례 학습하는 시간을 갖기로 하겠다. 아래와 같이 총 5개의 콤포넌트들을 순서대로 살펴볼텐데 이미 여러 스윙 예제를 지금까지 접하면서 친근한 것들(?)이 많을테니 공부하는데 그리 부담감은 없으리라 생각한다. 그럼 그 첫번째 시간으로 자바의 패널인 JPanel부터 공부해 보기로 하자.^^
General-Purpose Containers
JPanel
JScrollPane
JSplitPane
JTabbedPane
JToolBar
아마 많은 이들이 자바 스윙의 JFrame과 JPanel을 접하면서 도대체 뭐가 다른거지? 그냥 항상 자주 보던거긴한데 그게 그거 같고 막상 구분할려니 난감해 할것이다. 그런 이들에게 필자는 아주 클리어하게 위의 그림을 보여주고 싶다.^^ 그림을 보면서 영어의 사전적 의미를 되새겨보면 희한하게도 머리속이 깨끗하게 정리될 것이라 본다. 판넬? 오우 노오.. 패널~ ㅎㅎ
태반이 자바를 공부하면서도 자바의 뼈대인 이런 자바 가문(?)의 계보도를 홀대히 여기는 경향이 있는데 대부분 누군가에게 관심을 가지면서 뜻하든 뜻하지 않든 기본적으로 보게 되는 것이 가문이듯이 자바도 자연스럽게 이런 것을 가끔씩 쳐다보면 의외로 의문점이 자연스럽게 해결될때가 있다.
이거 도무지 필자가 무슨 말을 하는지 모르겠다 하는 이들은 다 집어치고 아래의 예제를 보기 바란다. 언제나 그렇듯 필자의 예제를 보기만 해도 신기하게 술술 풀리는 것에 의문점을 가지는 이들이 많으나 이 의문점을 필자도 풀어줄수 없음에 안타까움을 금하는 바이다.ㅎㅎ
예제에서 나오는 JLabel은 패널에 글자쓰기 위한 곁다리라고 보면되고 역시 핵심은 JFrame과 더불어 오늘의 주제인 JPanel인데 아마도 그냥보고 실행시켜보면서 꼼지락꼼지락 대다보면 저절로 이해가 되는 자신에 놀라게 될것이다.ㅎㅎ
설명을 너무 안하면 서운한 이들을 위해 간단하게 설명을 아주 살짝만 해보도록 하겠다. JFrame은 그냥 밖에 창테두리쳤다 생각하고 안에다 뭐좀 써넣으려고 JPanel 좀 건드리고 JFrame과 JPanel의 연결고리를 만들어주기 위해 Container 클래스 불러들여 엮어묶어서 해결하는 예제다.
본 예제의 이해 심층도를 높이기 위해서 한가지 덧붙이자면 add( ) 메소드를 각 클래스에 따라서 어떻게 이용하는지 유심히 살펴보면 전체적인 코드의 흐름이 느껴지기 시작할 것이다. 물론 그게 느껴지는 큰 이유중의 하나는 바로 필자가 만들었다고는 믿어지지 않는 아주 심플하고도 심오한 예제에 있을 것이나 필자가 시간이 없는 관계로 이에 대한 강조는 잠시 미루어두기로 하고 오늘은 이만 끝~^^
자바를 처음 시작한다는 가정하에 사소한 것부터 하나하나 짚고 넘어가며 따라하기 쉽도록
예제를 중심으로 모든 설명이 사용자의 관점에서 자세하게 기술되어 있는것이 특징입니다.
"강이"의 자바 강좌는 본 블로그(alecture.blogspot.com)와 제휴를 통해
독점적으로 공급될 예정이며 내용의 수정은 공급자의 제한으로 불가하고
사이트 출처를 밝히는데 한해 어디서나 자유롭게 쓸수있도록 합의하였음을 알립니다.
2012년 2월 17일 금요일
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라는 파일을 볼수 있을 것이다. 이것을 꺼주면 무리없이 원상태로 돌아갈 것이다. 우리는 자바를 배우고 있다. 당근 자바 실행파일을 무력화시키면 해결되는 것이다. 지금 필자의 말이 이해가 되지 않고 저거 도대체 무슨 이야기 하고 있는거야 하는 이들이 있다면 소스를 공부하고 실행해서 직접 겪어보다보면 저절로 알게 될것이리라 생각한다. 그럼 다음 시간에는 스윙의 대부분 프로그램에서 사용되고 일반적으로 쓰이는 컨테이너들에 대해서 공부할 것인데 다 배운 내용중 하나이니 무슨 클래스인지 한번쯤 생각해 보기 바라면서 오늘은 이만하겠다.^^
피드 구독하기:
글 (Atom)






