2012년 3월 11일 일요일

스윙으로 책갈피 만들기(JTabbedPane)

오늘은 아주 특별한 날이다. 이유는 잠시뒤에 알게되니 집중하기 바란다.^^ 자 스윙으로 책갈피를 만들어볼텐데 영어로 하면 tab이라고 하던가? 그래서 JTabbedPane 클래스를 이용하게 되는데 이해를 돕기위해 어김없이 오늘도 그림부터 살펴보겠다.ㅎㅎ




오늘 예제소스의 결과물은 위와 같다. 보다시피 위의 책갈피를 누르면 각 섹션에 해당하는 내용이 나오게된다. 요즘 여러분이 쓰고 있는 인터넷 브라우져를 생각하면 이해가 쉬울 것이다. 마이크로소프트사의 익스플로러나 구글의 크롬, 아니면 모질라의 파이어폭스가 이런 기능들을 기본적으로 사용하고 있다. "새탭으로 열기"가 바로 이 범주에 속하는데 이거를 자바로 어떻게 구현하는지를 필자가 예제로 보여줄 것이다. 저번에 한 패널을 분리해서 나누어 쓸수 있었다면 이번에는 한공간 전체를 공유하여 쓴다고 보면 될것인데 전체를 따로따로 활용할수 있어 공간 활용측면에서는 이게 짱(?)이라 볼수 있겠다. 따라서 쓰는 빈도수가 상당히 높으니 오늘 내용은 필사적으로 마스터하기 바란다.^^ 자 그럼 소스를 보겠다. 소스를 보면 왜 오늘이 특별한 날인지 이유는 소스보면 알게된다.ㅎㅎ


왜 오늘은 특별한 날인가? 필자가 예제를 만든지 100번째 되는 날이다. 오호~~ 강이의 자바강좌 예제 "100회 특집"이다. 너무 어이없다고? 원래 특집은 그런 것이다.ㅎㅎ 예제로 돌아가서 오늘의 내용의 핵심을 보기좋게 역시 한가운데에 몰아놓았다. 보면서 어떤 식으로 코드를 만들어가는지 순서를 익히도록 하는데 주안점을 두기 바란다. 프로그래밍의 흐름을 자연스럽게 익힐수 있을 것이다. 각 탭에서 해당 내용을 보여주기 위해 Container 클래스를 이용하였는데 add 메소드를 이용해 어떻게 연결시키는지 관심있게 보면 소스를 분석하는데 도움이 될것이라 본다. for 룹에서는 인덱스를 1로 시작하였는데 보통 0으로 시작하나 보기 좋으라고 1이라고 한것이니 이런거 쓰잘데없이 깊이 파고들지 말아라. 날샐라... ㅎㅎ 한줄로 필살 정리하자면 컨테이너 만들고 탭 만들고 버튼 만들어서 갖다붙여대면 완성되는 프로그램이라 할수 있을 것이다.ㅎㅎ 그럼 곰곰히 연구해 보길 바라면서 100회 특집은 이것으로 마치겠다.^^

2012년 3월 10일 토요일

스윙으로 분리창 만들기(JSplitPane)

오늘은 패널을 말그대로 분리시키는 작업을 해보겠다. 아래의 그림을 보면 이해가 쉬울 것이다.



그럼 소스를 보자.


소스를 보다시피 JSplitPane이라는 클래스를 이용해서 좌우로 나누든지 아니면 위아래로 그림처럼 나누는게 가능하다. 결과를 보면 갸우뚱 갸우뚱 하는 이가 있을지도 모르겠다. 결과에 프린트된 텍스트는 바꿀수 없나? 라는 의문이 들지도 모르겠다. 그런 의문점이 생긴 이들은 본인의 손으로 머리를 쓰다듬기 바란다. 장하다. ㅠㅠ


위의 그림을 보다시피 물론 가능하다. 예전에 배운 JButton클래스와 JSplitPane클래스에 들어있는 콤포넌트를 셋업하는 메소드들을 잘 결합하면 이것이 가능하다. 어떻게 하는지 좌우에 있는 텍스트 바꾸는걸 보여줄 것이니 여러분은 그걸 응용해서 위아래에 있는 텍스트도 바꾸어 보기 바란다.^^


소스를 보면 쉽게 이해가 되리라 생각한다. 위아래의 텍스트는 좌우로 표시했던 부분을 위아래로 영어만 살짝(?) 고치면 가능할 것이다. 이런 방식이 어쩔때 필요할까? 여러분이 인터넷이나 아니면 프로그램을 보다보면 한쪽에는 인덱스가 있고 다른 한쪽에는 그에 따른 설명이 나온다든지, 한쪽에는 파일이름들이 있고 다른 한쪽에는 그 파일을 클릭하면 그림이 뜬다든지등등의 프로그램을 만들때 쓰면 유용하다. 하나의 패널을 두개로 나누어 효율적으로 쓰기 위함이다 생각하면 되겠다. 이상~^^

2012년 3월 8일 목요일

스윙으로 스크롤바 만들기(JScrollPane)

오늘은 자바 스윙중에서 JScrollPane에 대해서 공부해 보기로 하겠다. 말이 디립게(?) 어려운데 이해하기 쉬운 용어로 다시 풀이하자면 '스크롤바'를 떠올리면 되겠다. 그럼 그림을 보자.


이젠 칼라로 볼까?


그림 더 보기로 하자.


JScrollPane에 대해서 공부하다보면 자연스럽게 알게되는 용어들인데 해당 단어가 무엇을 뜻하는지 그림을 통하면 여러분이 보다시피 훨씬 쉬울 것이다. 위의 사진에서 아기가 외국 아가(?)인 것은 자바가 외국에서 만들어져서 그런 것이다. 아마 한국이였으면 한국 아가(?)를 예제로 써먹을 것이라는 우스갯 소리 아닌 소리를 하면서 본격적인 프로그램으로 들어가보겠다.^^

이제 볼 예제 프로그램을 소개하자면 항상 그렇지만 필자는 오로지 핵심 그리고 초간단 예제, 즉 프로그래밍의 완전 초짜(?)도 신기하게 이해하는 프로그램을 제작하였다. 프로그래밍은 고수일수록 프로그램이 아주 간단하고 명료하며 하수일수록 프로그램이 아주 복잡하고 길다. 따라서 모르는 사람들이 보면 프로그램 길게 쓰는 사람이 고수인줄 아는데 큰 착각이다.ㅎㅎ 오늘 예제를 보면 필자에게서 고수의 풍모를 유감없이 느낄 것이라 본다.^^ 쉿~ 묻지도 말고 따지지도 말고 결과부터 자봐(JAVA)! ㅎㅎ


허걱 웬 아가씨가~ ㅎㅎ 아주 눈들이 초롱초롱 빛나는구나 *_*
그냥 패널안에다가 text나 써놓고 JScrollPane 자바소스 공부하려다가 여러분의 의욕과 정열(?)을 고취시키기 위해 필자가 특별히 이쁜이(?)를 긴급 섭외해서 여러분께 소개하니 집중해서 소스를 보기로 하자. ㅎㅎ 오늘은 강조안해도 눈에 불을 키고 들고 팔것 같구나.^^

다시 본론으로 가서 결과물 사진을 보면 오른쪽 옆과 아래쪽 밑에 스크롤바를 움직여 사진의 안보이는 쪽을 볼수 있게 하고 있다. 만약 JScrollPane이라는 클래스를 프로그램에서 구현하지 않았다면 사진이 그냥 짤려서 나오지 저렇게 스크롤바가 나오지 않는다. 그럼 어떻게 하면 스크롤바가 튀어나오게 해서 이쁜이(?)를 제대로 볼수 있을까? *_- 그것이 오늘의 핵심이다. 예제를 보기전에 미리 생각 좀 때려보고 모르겠거든 자기 머리를 힘차게 때린후에 아래 예제를 보도록 한다.


소스를 보면 중간에 네줄이 오늘 배울 내용인데 보다시피 코드가 굉장히 심플하다. 왜냐? 강조안하겠다.ㅎㅎ 중간에 위의 ImageIcon 클래스를 불러들여 레이블에 저렇게 이미지를 집어넣고 있는데 그림파일을 스윙에서 구현할때 쓰이는 표현방식이니 어떻게 쓰는지 관심있게 보면서 익숙해지기 바란다. 그림파일은 소스와 같은 디렉토리에 두면 작동된다. 혹시 Icon이랑 ImageIcon이랑 매치가 안되는걸 이상하게 생각하고 있는 이들은 필자가 아주 오래전에 상속부분인가 거기에서 저렇게 다른식으로 쓰는 방법이 있다고 하였으니 찾아보기 바라고 여기선 Icon이 클래스가 아니라 인터페이스일텐데 그것도 라이브러리 찾아보면 나오는 것이니 게으름피지말고 확인해보기 바란다. 중간 밑에 두줄은 말 그대로 스크롤바 만들려고 객체생성해서 사진 넣고 셋팅하는 명령어다. 만약에 밑에 두줄 없이 바로 프레임의 add 메소드에다가 사진 집어넣으면 스크롤바가 당근 안뜬다. 궁금하면 확인해보길 바라면서 오늘은 이렇게 끝내겠다.^^ 아차 그리고 사진속 소녀의 이름이 궁금한 이들은 필자가 예제소스에다 이름써놓았으니 괜히 또 묻지말아라.ㅎㅎ