2011년 6월 26일 일요일

자바 스윙(Java Swing)

자바 GUI(Graphic User Interface) 프로그래밍의 대표격인 스윙(Swing)에 대해서 오늘부터 단계적으로 다뤄보고자 한다. 자바를 공부하면서 숫자와 문자의 조합으로 결과가 나오는 것이 지루하고 따분하게 느껴졌다면 오늘 이 시간부터 여러분은 새로운 세계(?)에 흥미를 가질지도 모르겠다. 자바의 스윙은 프로그램 컴포넌트 셋으로서 GUI 컴포넌트인 버튼이나 스크롤바등을 여러 플랫폼에서 독립적으로 만들수 있는 기능을 제공한다. 너무 거창하게 설명했남? ㅎㅎ 한마디로 자바의 스윙(Swing)은 그래픽 구현하려고 JDK 개발툴에서 만든 자바 기반 클래스의 일부분이다.


자바의 스윙(Java Swing)은 자바 GUI로 기존에 쓰던 AWT(Abstract Window Toolkit)이라는게 있는데 여기서 쓰던 기본적인 시스템의 자원과 기능을 그대로 제공하며 여기서 더 나아가 표나 트리등의 복잡하고 더욱더 다양한 그래픽 컴포넌트를 사용하고 보완하기 위해 자바 개발툴인 JDK 1.2 버젼부터 도입되어 현재에 이르게 되었다. 다시 말하면 AWT의 부족한 부분을 채우기 위해 만들어졌다고 생각하면 된다. 따라서 필자는 AWT를 따로 강의하지 않고 신개념의 신기술인 자바의 스윙을 바로 들어가겠다. AWT 공부하다 지쳐서 정말 배워야하는 Swing을 배우기 전에 나가떨어지는 이들을 막기 위한 필자의 치밀한 강의전략(?)인 것이다.^^

방금 얘기한 자바 스윙(Java Swing)은 javax.swing.*; 패키지에 그리고 AWT는 java.awt.*; 패키지에 들어있다. 자바의 스윙을 공부할 것이므로 대부분 javax.swing 패키지를 이용할 것이나 부분적으로 필요할 경우 java.awt 패키지도 사용하도록 하겠다. 자 그럼 자바의 스윙에 들어가기에 앞서 기본적인 클래스 트리가 어떤 식으로 구성되어 있는지 살펴보도록 하겠다. 처음이라 와닿지 않을 것이나 언젠가(?) 여러분이 필요할때가 생겨날 것이다. 가벼운 마음으로 구경하기 바란다. 제발 쓸데없이 무조건 외우지 말아라. 쓰다보면 알게된다.ㅎㅎ


보다보면 특이한게 그냥 클래스 이름을 쓰면 될것이지 이상하게 앞에 J라는 대문자가 하나씩 더 들어간 것을 볼수 있을 것이다. 기존 AWT에서는 J가 없었으나 Swing이 생기면서 기존 툴과 구별하기 위해 J를 붙인것으로 알고있으면 된다. 오늘은 스윙을 이용해서 자바를 처음 배울때처럼 그래픽(?)을 구현하여 문자를 출력해보도록 하겠다. 기대하시라~ 쨔짜잔~ ㅎㅎ


여러분이 윈도우에서 여러 프로그램들을 사용할때 일반적으로 나오는 창이 위와 같은데 이것을 이제 자바로 만드는 것이다. 저거 일일이 어떻게 도형그리고 선긋고 만들지라고 생각하면서 앞서가는 이들이 있을지 모르겠는데 위에 보는 기본창은 자바에서 명령어 몇줄만 긁적이면 알아서 만들어주게끔 되어있으니 염려 푹 놓으시라.^^


위에서 보는 그림이 기본창에서 들어가는 대표적인 클래스들인데 오늘은 여기서 JFrame과 JLabel 그리고 Content Pane을 약간 사용하게 될것인데 아래 그림을 보면 해당 제목들이 이해가 더 잘될 것이다. 잘 안보이면 클릭해서 보자. 그림을 확대해서 친절(?)하게 보여준다.ㅎㅎ


그런데 암만봐도 필자가 무슨 말을 하고 있는지 어안이 벙벙한 이들도 있을 것이다. 그도 그럴것이 갑자기 자바로 그림 그리겠다고 하니 말이다. 그건 여러분의 탓이 아니니 염려하지 말자. 필자가 누구더냐? 이제까지 다 이해못했어도 전혀 문제될게 없다. 여러분의 모든 고민을 해결해줄 빵빵한 예제(?)가 아래에 기다리고 있으니 말이다.^^


오늘의 하이라이트(?)인 예제의 결과물이 위와 같다. 예전 같으면 시커먼 모니터 화면에 딸랑 주소 한줄만 출력되었겠지만 거기다가 껍데기(?)만 이쁘게 씌워놔도 뭔가 있는듯하다.ㅎㅎ 그럼 어떻게 위와같은 그래픽을 구현할수 있는지 예제 코드를 살펴보자.


자바 스윙을 시작하는 첫 시간이라 내용을 단순하게 만들기 위해 각고의 노력(?)을 기울인만큼 여러분도 그에 상응한 고통을 수반한 노력(?)을 치뤄야 할것이다.ㅎㅎ 농담이다. 가볍게 봐도 저절로 이해될 것이다. 간략하게 예제를 설명하자면 일단 JFrame과 JLabel 클래스를 쓰기 위해 javax.swing 패키지에서 import 하였고 해당 클래스 이용해서 프레임 만들고 레이블 만들고 프레임 제목 쓰고 사이즈 정하고 보이도록 세팅해준게 전부다. 예제에 대한 설명으로 쓴 주석이 자바 스윙의 첫 예제라 그런지 필자도 모르게 너무 과하게 써버려서 이해하는데 어려울건 없다고 본다.ㅎㅎ

엄밀히 말해서 자바의 스윙 콤포넌트들은 쓰레드에 안전하다고 장담할수 없다. 따라서 메인메소드에서 run( ) 메소드를 이용해 자바 스윙을 구현하는게 바람직하나 지금은 기술적으로 그렇구나라고 알고만 있자. 초반에는 스윙 대부분의 콤포넌트들이 lightweight를 지향하는 경량 프로그램인 것처럼 여러분도 가벼운 마음으로 워밍업한다 생각하고 열심히 스윙(?)을 연습하기 바란다.^^

댓글 18개:

  1. 감사합니다 잘봣어요`1

    답글삭제
  2. 감사합니다.^^
    딱딱한 책보다 훨씬 이해도 쉽고 재밌네요.

    답글삭제
  3. 감사합니다. 많은 도움이 되엇어요

    답글삭제
  4. 스윙 공부좀할려고했는데 좋은정보입니다. 공부계속할게요

    답글삭제
  5. 공부 잘했습니다.

    답글삭제
  6. 강이님 저가 자바 숙제 받았는데 이거 어떻게 하는지 좀 가르쳐 주실수 있나여

    답글삭제
  7. 음... 소스를 이미지파일로 붙여놓아서 확인하기가 힘드네요 ...

    답글삭제
    답글
    1. 그래도 강의 잘 보았습니다!

      삭제
    2. 이미지 클릭하면 크게 보이던데요

      삭제
  8. You need to lead the Google bot down a line
    brimming with great editorial content. You cannot
    see these words using the human eye - however the eye of search engine spider can spot
    them easily. How many sites link in your site - A sites popularity is measured firstly by the number of sites that directly link
    to your site.
    My page - magic article rewriter

    답글삭제
  9. Youг report has proven useful to myself.
    It’s extremely informаtivе and you're simply certainly extremely experienced of this type. You get opened up my own eyes to be able to numerous opinion of this subject matter using interesting and solid content material.
    Feel free to visit my web-site ... Buy Valium

    답글삭제
  10. Fantаstіc beat ! Ӏ wish to apprentice whilе you amend
    уour website, how can і subsсrіbe for a blog web site?
    The асcount aiԁeԁ me
    a аcceptable deal. I haԁ beеn tiny bit acquainted of this your bгοаdcast offered bгight cleaг cοnсept

    Also visіt my webpage - payday loans

    답글삭제
  11. If ѕomе onе desires to be updated with
    newest technologіes after that he must bе pаy a quiсk visit thіs
    wеbsite and be up to date daily.

    Stop by my web site ... payday loans

    답글삭제
  12. Today, while I was at work, my cousin stole my iphone
    and tested to see if it can survive a twenty five foot drop, just
    so she can be a youtube sensation. My apple ipad is now destroyed and she has 83
    views. I know this is completely off topic but I had to share it with someone!



    My web-site; homepage

    답글삭제
  13. Thanks for the marvelous posting! I actually enjoyed reading it, you might be a great author.
    I will make certain to bookmark your blog and will often come back very soon.
    I want to encourage you to continue your great job,
    have a nice afternoon!

    my web site: blue sky payday loan lenders

    답글삭제
  14. Wow, this piuece of writing is pleasant, my younger sister is analyzing these
    things, so I am going to tell her.

    My website :: wind energy pros and cons yahoo (http://Promotenaija.com)

    답글삭제
  15. Great blog! Do you have any suggestions for aspiring writers?
    I'm hoping to start my own website soon but I'm a little lost on everything.
    Would you advise starting with a free platform like Wordpress or go for a paid option? There are so many options out there that
    I'm completely overwhelmed .. Any suggestions?
    Bless you!

    My site: criminal lawyers in phoenix

    답글삭제
  16. No matter if some one searches for his essential thing, therefore he/she wishes to
    be available that in detail, so that thing is maintained over here.


    my web blog; litigation toronto; http://www.google.ca,

    답글삭제