2012년 3월 11일 일요일

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

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




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


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

2012년 3월 10일 토요일

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

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



그럼 소스를 보자.


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


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


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