상세 컨텐츠

본문 제목

애플릿 프로그래밍 1

프로그래밍/JAVA

by 라제폰 2009. 1. 23. 17:14

본문

[강좌] 애플릿 프로그래밍 1

이글은 잠탱이 3인방님들의 글입니다.
저자와의 협의없이 함부로 Reposting될 수 없음을 알려드립니다.

<FONT face=굴림 size=2>안녕하세요...잠탱입니다. 여기까지 오시느라 힘들셨죠(?) 그럼 숨을 크게 한 번 쉬시고, 새로운 마음으로 자바 에플렛(Applet)의 세 계로 여행을 떠나도록 하죠. 에플렛이 뭐냐구요??? 아시는 분들도 계시겠 지만, 모르시는 분들을 위해 간단히 설명드리도록 하죠. 지금까지 배웠던 것과는 달리(지금까지 공부한 내용은 자바 어플리케이션 임), 자바 프로그램을 HTML(HyperText Markup Language)문서에 삽입함 으로 정적이었던 문서를 보다 화려하고 활기차고 생기넘치는 동적인 문서 로 표현할 수 있습니다. 이렇게 HTML문서에 삽입되어지는 자바로 만든 네트워크 소프트 웨어를 에플렛이라고 합니다. 따라서 여러분은 지금까지 는 단독실행되는 자바 어플리케이션을 공부한 셈입니다. (간단한 구별은 프로그램내에 main()이 있으면 어플리케이션이고, 아닌경우는 에플렛이라 고 보시면 됩니다.) 이제 아래에 설명될 일련의 과정을 통해 여러분들은 아주 간단한 자바 에 플렛을 만들어 실행 시켜보실 겁니다. ◎ 'Hello World' Applet 앞으로 설명되어질 내용을통해 여러분은 에플렛을 만들고 사용할 수 있습 니다. 아래는 앞으로 언급할 모든 단계에서 사용되어질 디렉토리(or 폴터) 구성입니다. 물론 여러분의 작업 디렉토리가 있다면 굳이 만드실 필요는 없겠죠. 물론 파일의 이름(HTML문서나 자바소스 화일이름)도 여러분이 원하시는 이름으로 해도 되구요. 작업디렉토리 에플렛을 만들기 위해 사용되어지는 화일들 ...-- work ---+-- Wakeup.html (HTML문서화일) +-- Wakeup.java (자바 소스 화일) +-- Wakeup.class (컴파일된 바이트코드 화일) ....... ● 단계0. 디렉토리 생성 (필요없는 분은 통과~~~~) 먼저 위와같이 work 디렉토리를 만드십시오. ● 단계1. 자바 소스 파일의 작성 아래와 같은 자바 소스 파일(화일명: Wakeup.java)을 work 디렉토리에 만드십시오.(코드의 자세한 내용은 추후 설명되어질 것이니, 아무 걱정하시 지 마시고 그냥 팍팍 써 넣으십시요...) import java.awt.Graphics; public class Wakeup extends java.applet.Applet { public void init() { resize(150, 25); } public void paint(Graphics g) { g.drawString('Wake Up!', 50, 25); } } ●단계 2. 소스화일의 컴파일 자바 컴파일러(javac.exe)를 사용해서 Wakeup.java 파일을 컴파일합니다. 컴파일이 성공한다면, 컴파일러는 Wakeup.class 라는 파일을 만들것입니 다. 만약 컴파일이 실패했다면, 정확히 타이핑을 했는지 확인하고 파일명도 확인하기 바랍니다. 잘못된 부분을 수정하시고 다시 컴파일....... ● 단계3. 에플렛을 포함하는 HTML 파일 작성 work 디렉토리 또는 여러분의 작업 디렉토리에 아래와 같은 텍스트(화 일명: Wakeup.html)을 만듭니다. (자바하기도 바쁜데 웬 HTML문서냐구 요??...이것은 자바강좌이니깐, 자세한 HTML문서의 작성요령은 제외시키 겠습니다. 시중에 좋은 책들이 있으니깐 사보시던지, 아니면 강좌 없나??? 그래도 돈이 없으셔서 책을 못사시는 분을 위해 자바 에플렛을 사용하는데 있어 필요하다고 생각되는 부분은 나중에 설명을 드릴께요. 일단은 아래와 같이 만드시구요.) <html> <head> <script type="text/javascript">if (!window.T) { window.T = {} } window.T.config = {"TOP_SSL_URL":"https://www.tistory.com","PREVIEW":false,"ROLE":"guest","PREV_PAGE":"","NEXT_PAGE":"","BLOG":{"id":295074,"name":"rahxephon","title":"[RahXePhon] 하쿠나 마타타~","isDormancy":false,"nickName":"라제폰","status":"open","profileStatus":"normal"},"NEED_COMMENT_LOGIN":false,"COMMENT_LOGIN_CONFIRM_MESSAGE":"","LOGIN_URL":"https://www.tistory.com/auth/login/?redirectUrl=http://rahxephon.tistory.com/599","DEFAULT_URL":"https://rahxephon.tistory.com","USER":{"name":null,"homepage":null,"id":0,"profileImage":null},"SUBSCRIPTION":{"status":"none","isConnected":false,"isPending":false,"isWait":false,"isProcessing":false,"isNone":true},"IS_LOGIN":false,"HAS_BLOG":false,"IS_SUPPORT":false,"TOP_URL":"http://www.tistory.com","JOIN_URL":"https://www.tistory.com/member/join","ROLE_GROUP":"visitor"}; window.T.entryInfo = {"entryId":599,"isAuthor":false,"categoryId":151121,"categoryLabel":"프로그래밍/JAVA"}; window.appInfo = {"domain":"tistory.com","topUrl":"https://www.tistory.com","loginUrl":"https://www.tistory.com/auth/login","logoutUrl":"https://www.tistory.com/auth/logout"}; window.initData = {}; window.TistoryBlog = { basePath: "", url: "https://rahxephon.tistory.com", tistoryUrl: "https://rahxephon.tistory.com", manageUrl: "https://rahxephon.tistory.com/manage", token: "xtLBevDLgvLGA4cjNDvux+EmGiLdp3IVdxi2aY9jb0aDZyChmHT3iwkY0s2mX7P8" }; var servicePath = ""; var blogURL = "";</script> <title> Wakeup Applet </title> <link rel="stylesheet" type="text/css" href="https://tistory1.daumcdn.net/tistory_admin/userblog/tistory-e11b6cd63d67e948b9dd33a1d0a60492dd6a0cbf/static/style/revenue.css"/> <link rel="canonical" href="https://rahxephon.tistory.com/599"/> <!-- BEGIN STRUCTURED_DATA --> <script type="application/ld+json"> {"@context":"http://schema.org","@type":"BlogPosting","mainEntityOfPage":{"@id":"https://rahxephon.tistory.com/599","name":null},"url":"https://rahxephon.tistory.com/599","headline":"애플릿 프로그래밍 1","description":"[강좌] 애플릿 프로그래밍 1 이글은 잠탱이 3인방님들의 글입니다. 저자와의 협의없이 함부로 Reposting될 수 없음을 알려드립니다. 안녕하세요...잠탱입니다. 여기까지 오시느라 힘들셨죠(?) 그럼 숨을 크게 한 번 쉬시고, 새로운 마음으로 자바 에플렛(Applet)의 세 계로 여행을 떠나도록 하죠. 에플렛이 뭐냐구요??? 아시는 분들도 계시겠 지만, 모르시는 분들을 위해 간단히 설명드리도록 하죠. 지금까지 배웠던 것과는 달리(지금까지 공부한 내용은 자바 어플리케이션 임), 자바 프로그램을 HTML(HyperText Markup Language)문서에 삽입함 으로 정적이었던 문서를 보다 화려하고 활기차고 생기넘치는 동적인 문서 로 표현할 수 있습니다. 이렇게 HTML문서에 삽입되어지는 자바로 만든 네..","author":{"@type":"Person","name":"라제폰","logo":null},"image":{"@type":"ImageObject","url":"https://img1.daumcdn.net/thumb/R800x0/?scode=mtistory2&fname=https%3A%2F%2Ft1.daumcdn.net%2Ftistory_admin%2Fstatic%2Fimages%2FopenGraph%2Fopengraph.png","width":"800px","height":"800px"},"datePublished":"2009-01-23T17:14:02+09:00","dateModified":"2009-01-23T17:14:02+09:00","publisher":{"@type":"Organization","name":"TISTORY","logo":{"@type":"ImageObject","url":"https://t1.daumcdn.net/tistory_admin/static/images/openGraph/opengraph.png","width":"800px","height":"800px"}}} </script> <!-- END STRUCTURED_DATA --> <link rel="stylesheet" type="text/css" href="https://tistory1.daumcdn.net/tistory_admin/userblog/tistory-e11b6cd63d67e948b9dd33a1d0a60492dd6a0cbf/static/style/dialog.css"/> <link rel="stylesheet" type="text/css" href="//t1.daumcdn.net/tistory_admin/www/style/top/font.css"/> <link rel="stylesheet" type="text/css" href="https://tistory1.daumcdn.net/tistory_admin/userblog/tistory-e11b6cd63d67e948b9dd33a1d0a60492dd6a0cbf/static/style/postBtn.css"/> <link rel="stylesheet" type="text/css" href="https://tistory1.daumcdn.net/tistory_admin/userblog/tistory-e11b6cd63d67e948b9dd33a1d0a60492dd6a0cbf/static/style/comment.css"/> <link rel="stylesheet" type="text/css" href="https://tistory1.daumcdn.net/tistory_admin/userblog/tistory-e11b6cd63d67e948b9dd33a1d0a60492dd6a0cbf/static/style/tistory.css"/> <script type="text/javascript" src="https://tistory1.daumcdn.net/tistory_admin/userblog/tistory-e11b6cd63d67e948b9dd33a1d0a60492dd6a0cbf/static/script/common.js"></script> <script type="text/javascript" src="https://tistory1.daumcdn.net/tistory_admin/userblog/tistory-e11b6cd63d67e948b9dd33a1d0a60492dd6a0cbf/static/script/comment.js" defer=""></script> </head> <body> First Java applet program: <applet code='Wakeup.class' width=150 height=25> </applet> <script type="text/javascript">(function($) { $(document).ready(function() { lightbox.options.fadeDuration = 200; lightbox.options.resizeDuration = 200; lightbox.options.wrapAround = false; lightbox.options.albumLabel = "%1 / %2"; }) })(tjQuery);</script> <div style="margin:0; padding:0; border:none; background:none; float:none; clear:none; z-index:0"></div> <script type="text/javascript" src="https://tistory1.daumcdn.net/tistory_admin/userblog/tistory-e11b6cd63d67e948b9dd33a1d0a60492dd6a0cbf/static/script/common.js"></script> <script type="text/javascript">window.roosevelt_params_queue = window.roosevelt_params_queue || [{channel_id: 'dk', channel_label: '{tistory}'}]</script> <script type="text/javascript" src="//t1.daumcdn.net/midas/rt/dk_bt/roosevelt_dk_bt.js" async="async"></script> <script type="text/javascript" src="https://tistory1.daumcdn.net/tistory_admin/userblog/tistory-e11b6cd63d67e948b9dd33a1d0a60492dd6a0cbf/static/script/menubar.min.js"></script> <script>window.tiara = {"svcDomain":"user.tistory.com","section":"글뷰","trackPage":"글뷰_보기","page":"글뷰","key":"295074-599","customProps":{"userId":"0","blogId":"295074","entryId":"599","role":"guest","trackPage":"글뷰_보기","filterTarget":false},"entry":{"entryId":"599","categoryName":"프로그래밍/JAVA","categoryId":"151121","author":"297269","image":"","plink":"/599","tags":["java","애플릿"]},"kakaoAppKey":"3e6ddd834b023f24221217e370daed18","appUserId":"null"}</script> <script type="module" src="https://t1.daumcdn.net/tistory_admin/frontend/tiara/v1.0.0/index.js"></script> <script src="https://t1.daumcdn.net/tistory_admin/frontend/tiara/v1.0.0/polyfills-legacy.min.js" nomodule="true" defer="true"></script> <script src="https://t1.daumcdn.net/tistory_admin/frontend/tiara/v1.0.0/index-legacy.js" nomodule="true" defer="true"></script> </body> </html> ● 단계4. HTML 파일의 로드 Netscape 윈도우(또는 그밖의 프로우져)의 상단부에 있는 Location필드 에 작성한 HTML문서의 URL(Uniform Resource Locator)을 입력하십시 요. 예를 들면 file:/c:/java/work/Wakeup.html 와 같이 입력하시면 됩니다. (또는 메뉴에서 File을 선택하고 Open file을 누르신후 여러분이 작성하신 HTML문서를 찾아서 클릭하셔도 됩니다.) 일단 이 과정이 성공적으로끝나면, 여러분은 netscape의 화면에 아래와 같은 출력을 보실수 있을겁니다. First Java applet program: Wake Up! ◇ 다른방법 : appletviwer의 이용 만약 여러분께서 에플렛이 어떻게 동작되는지에만 관심을 갖고 계시다면 만드신 에플렛을 자바가 제공하는 appletviewer.exe를 통해 보실 수 있습니 다. 아래와 같이 프롬프트상에서 치시던가, javaside나 diva를 사용하시는 분들은 사과 모양의 아이콘을 선택해서 실행시키면 됩니다.(추천: Diva나 javaside를 사용하면 프로그램 작성하기가 아주 편해짐. 특히 nc 에디터를 사용해서 코드를 작성하시는분들은 파일명을 rename하느라 고생하시지 마 시고, diva 나 javaside를 사용하세요. 자바 소스 코드, HTML문서 작성에 서부터 컴파일, 실행, 디버깅, 에플렛뷰어, 웹 프로우져, 그리고 코드에서 사용되어진 클래스 및 메쏘드, 인스턴스 등을 한 눈에 볼수 있는 기능 등 등 모두 사용가능합니다.) c:\java\work>appletviwer Wakeup.html 주의: 에플렛을 reload 하려고 할때 work디렉토리에서 브로우져를 실행하 지 마십시오. 왜냐하면 클래스 로더(loader)의작동되는 방법 때문에, 에플 렛의 컴파일 코드를 포함하는 디렉토리에서 에플렛 뷰어를 실행시킬 때는 에플렛은 reload되어지지 않기때문입니다.(예를 들어 코드를 수정한 후 reload한 경우) 이것으로써 여러분은 아주 간단한 자바 에플렛을 만들고 실행시키신 것입 니다. 계속해서 좀더 자세하게 에플렛에 대해 공부하겠습니다. 1. 에플렛의 개요 여러분이 작성하는 모든 에플렛은 자바가 제공하는 Applet 클래스 라이 브러리의 서브 클래스로 생성되어 수행됩니다. 앞의 예제에서도 볼 수 있 듯이 extends 키워드를 사용해서 Applet의 서브클래스로 Wakeup를 계승 했지요. 아래에 있는 그림은 Applet 클래스의 상속 계보(inheritance hierarchy)입 니다. java.lang.Object +-- java.awt.Component +-- java.awt.Container +-- java.awt.Panel +-- java.applet.Applet 'Simple' 에플렛 여기서 또 다른 에플렛 소스를 만들도록 하죠. 아래에 Simple로 명시된 에 플렛을 위한 소스 코드가 있습니다. Simple 에플렛은 에플렛의 일생(life)에 주요사건(예를 든다면 사용자가 에플렛이 포함된 페이지를 처음으로 방문 한다든지 하는...)들을 만날때마다 설명적인 스트링을 화면에 표시하는 프 로그램입니다. 앞으로 설명되어질 내용들은 이 Simple 에플렛을 사용하고, 많은 에플렛 들에서 공통적인 개념들을 설명하기 위해 Simple 에플렛을 확장하는 방식 을 택하도록 하겠습니다. 만약 여러분들 중 앞에서 소개된 자바 프로그램 문법을 이해하시지 못하는 분이 계시다면, 저는 앞에서 강좌된 내용들을 다시 한 번 보시도록 정중히 부탁드립니다. 그럼 모든 분들이 준비 되셨으면, 이젠 아래의 코드를 작성하십시요. // Simple.java 1: import java.awt.Graphics; 2: 3: public class Simple extends java.applet.Applet { 4: StringBuffer buffer = new StringBuffer(); 5: 6: public void init() { 7: resize(500, 20) { 8: addItem('Initializing...'); 9: } 10: 11: public void start() { 12: addItem('Starting...'); 13: } 14: public void stop() { 15: addItem('Stopping...'); 16: } 17: 18: public void destroy() { 19: addItem('Preparing for unloading...'); 20: } 21: 22: public void addItem(String newWord) { 23: System.out.println(newWord); 24: buffer.append(newWord); 25: repaint(); 26: } 27: 28: public void paint(Graphics g) { 29: g.drawRect(0, 0, size().width-1, size().height-1); 30: g.drawString(buffer.toString(), 5, 15); 31: } 32: } 아래는 Simple 에플렛을 포함하는 HTML문서 입니다. // Simple.html <html> <head> <script type="text/javascript">if (!window.T) { window.T = {} } window.T.config = {"TOP_SSL_URL":"https://www.tistory.com","PREVIEW":false,"ROLE":"guest","PREV_PAGE":"","NEXT_PAGE":"","BLOG":{"id":295074,"name":"rahxephon","title":"[RahXePhon] 하쿠나 마타타~","isDormancy":false,"nickName":"라제폰","status":"open","profileStatus":"normal"},"NEED_COMMENT_LOGIN":false,"COMMENT_LOGIN_CONFIRM_MESSAGE":"","LOGIN_URL":"https://www.tistory.com/auth/login/?redirectUrl=http://rahxephon.tistory.com/599","DEFAULT_URL":"https://rahxephon.tistory.com","USER":{"name":null,"homepage":null,"id":0,"profileImage":null},"SUBSCRIPTION":{"status":"none","isConnected":false,"isPending":false,"isWait":false,"isProcessing":false,"isNone":true},"IS_LOGIN":false,"HAS_BLOG":false,"IS_SUPPORT":false,"TOP_URL":"http://www.tistory.com","JOIN_URL":"https://www.tistory.com/member/join","ROLE_GROUP":"visitor"}; window.T.entryInfo = {"entryId":599,"isAuthor":false,"categoryId":151121,"categoryLabel":"프로그래밍/JAVA"}; window.appInfo = {"domain":"tistory.com","topUrl":"https://www.tistory.com","loginUrl":"https://www.tistory.com/auth/login","logoutUrl":"https://www.tistory.com/auth/logout"}; window.initData = {}; window.TistoryBlog = { basePath: "", url: "https://rahxephon.tistory.com", tistoryUrl: "https://rahxephon.tistory.com", manageUrl: "https://rahxephon.tistory.com/manage", token: "xtLBevDLgvLGA4cjNDvux+EmGiLdp3IVdxi2aY9jb0aDZyChmHT3iwkY0s2mX7P8" }; var servicePath = ""; var blogURL = "";</script> <title> Simple Applet </title> <link rel="stylesheet" type="text/css" href="https://tistory1.daumcdn.net/tistory_admin/userblog/tistory-e11b6cd63d67e948b9dd33a1d0a60492dd6a0cbf/static/style/revenue.css"/> <link rel="canonical" href="https://rahxephon.tistory.com/599"/> <!-- BEGIN STRUCTURED_DATA --> <script type="application/ld+json"> {"@context":"http://schema.org","@type":"BlogPosting","mainEntityOfPage":{"@id":"https://rahxephon.tistory.com/599","name":null},"url":"https://rahxephon.tistory.com/599","headline":"애플릿 프로그래밍 1","description":"[강좌] 애플릿 프로그래밍 1 이글은 잠탱이 3인방님들의 글입니다. 저자와의 협의없이 함부로 Reposting될 수 없음을 알려드립니다. 안녕하세요...잠탱입니다. 여기까지 오시느라 힘들셨죠(?) 그럼 숨을 크게 한 번 쉬시고, 새로운 마음으로 자바 에플렛(Applet)의 세 계로 여행을 떠나도록 하죠. 에플렛이 뭐냐구요??? 아시는 분들도 계시겠 지만, 모르시는 분들을 위해 간단히 설명드리도록 하죠. 지금까지 배웠던 것과는 달리(지금까지 공부한 내용은 자바 어플리케이션 임), 자바 프로그램을 HTML(HyperText Markup Language)문서에 삽입함 으로 정적이었던 문서를 보다 화려하고 활기차고 생기넘치는 동적인 문서 로 표현할 수 있습니다. 이렇게 HTML문서에 삽입되어지는 자바로 만든 네..","author":{"@type":"Person","name":"라제폰","logo":null},"image":{"@type":"ImageObject","url":"https://img1.daumcdn.net/thumb/R800x0/?scode=mtistory2&fname=https%3A%2F%2Ft1.daumcdn.net%2Ftistory_admin%2Fstatic%2Fimages%2FopenGraph%2Fopengraph.png","width":"800px","height":"800px"},"datePublished":"2009-01-23T17:14:02+09:00","dateModified":"2009-01-23T17:14:02+09:00","publisher":{"@type":"Organization","name":"TISTORY","logo":{"@type":"ImageObject","url":"https://t1.daumcdn.net/tistory_admin/static/images/openGraph/opengraph.png","width":"800px","height":"800px"}}} </script> <!-- END STRUCTURED_DATA --> <link rel="stylesheet" type="text/css" href="https://tistory1.daumcdn.net/tistory_admin/userblog/tistory-e11b6cd63d67e948b9dd33a1d0a60492dd6a0cbf/static/style/dialog.css"/> <link rel="stylesheet" type="text/css" href="//t1.daumcdn.net/tistory_admin/www/style/top/font.css"/> <link rel="stylesheet" type="text/css" href="https://tistory1.daumcdn.net/tistory_admin/userblog/tistory-e11b6cd63d67e948b9dd33a1d0a60492dd6a0cbf/static/style/postBtn.css"/> <link rel="stylesheet" type="text/css" href="https://tistory1.daumcdn.net/tistory_admin/userblog/tistory-e11b6cd63d67e948b9dd33a1d0a60492dd6a0cbf/static/style/comment.css"/> <link rel="stylesheet" type="text/css" href="https://tistory1.daumcdn.net/tistory_admin/userblog/tistory-e11b6cd63d67e948b9dd33a1d0a60492dd6a0cbf/static/style/tistory.css"/> <script type="text/javascript" src="https://tistory1.daumcdn.net/tistory_admin/userblog/tistory-e11b6cd63d67e948b9dd33a1d0a60492dd6a0cbf/static/script/common.js"></script> <script type="text/javascript" src="https://tistory1.daumcdn.net/tistory_admin/userblog/tistory-e11b6cd63d67e948b9dd33a1d0a60492dd6a0cbf/static/script/comment.js" defer=""></script> </head> <body> 2nd java applet program!!! <applet code='Simple.class' width=500 height=20> </applet> <script type="text/javascript">(function($) { $(document).ready(function() { lightbox.options.fadeDuration = 200; lightbox.options.resizeDuration = 200; lightbox.options.wrapAround = false; lightbox.options.albumLabel = "%1 / %2"; }) })(tjQuery);</script> <div style="margin:0; padding:0; border:none; background:none; float:none; clear:none; z-index:0"></div> <script type="text/javascript" src="https://tistory1.daumcdn.net/tistory_admin/userblog/tistory-e11b6cd63d67e948b9dd33a1d0a60492dd6a0cbf/static/script/common.js"></script> <script type="text/javascript">window.roosevelt_params_queue = window.roosevelt_params_queue || [{channel_id: 'dk', channel_label: '{tistory}'}]</script> <script type="text/javascript" src="//t1.daumcdn.net/midas/rt/dk_bt/roosevelt_dk_bt.js" async="async"></script> <script type="text/javascript" src="https://tistory1.daumcdn.net/tistory_admin/userblog/tistory-e11b6cd63d67e948b9dd33a1d0a60492dd6a0cbf/static/script/menubar.min.js"></script> <script>window.tiara = {"svcDomain":"user.tistory.com","section":"글뷰","trackPage":"글뷰_보기","page":"글뷰","key":"295074-599","customProps":{"userId":"0","blogId":"295074","entryId":"599","role":"guest","trackPage":"글뷰_보기","filterTarget":false},"entry":{"entryId":"599","categoryName":"프로그래밍/JAVA","categoryId":"151121","author":"297269","image":"","plink":"/599","tags":["java","애플릿"]},"kakaoAppKey":"3e6ddd834b023f24221217e370daed18","appUserId":"null"}</script> <script type="module" src="https://t1.daumcdn.net/tistory_admin/frontend/tiara/v1.0.0/index.js"></script> <script src="https://t1.daumcdn.net/tistory_admin/frontend/tiara/v1.0.0/polyfills-legacy.min.js" nomodule="true" defer="true"></script> <script src="https://t1.daumcdn.net/tistory_admin/frontend/tiara/v1.0.0/index-legacy.js" nomodule="true" defer="true"></script> </body> </html> 작성하시느라 수고하셨습니다. 자 이제부터 차근차근 소스 분석을 해보도 록 하지요. 첫 번째 라인의 import java.awt.Graphics; 은 앞의 강좌에서 공부했듯이 C나 C++의 include문와 유사한 동작을 합니다. 즉 java.awt.Graphics라는 클래스를 프로그램에서 사용하겠다는 의미입니다. 이 클래스는 28라인의 paint(...)메쏘드에서 매개변수 Graphics 객체인 g를 넘겨줌으로써, 메쏘드내 에서 drawRect(....)과 drawString(....)을 사용가능하게 합니다. 그럼 메쏘드 앞에 쓰여진 g. 는 무엇인가? 이것은 Graphics객체로 g라는 것을 만들어 매개 변수로 사용함 일컫는 것 으로, paint(..)메쏘드는 위와같이 Graphics 객체를 매개 변수로 필요로 합 니다.(paint(...)메소드에 대해서는 일단 이렇게만 알아두시고 나중에 다시 설명하도록 하겠습니다.)따라서 Graphic 객체 g의 메쏘드로 drawRect(...) 과 drawString(...)을 사용함을 의미하는 것입니다. 참고적으로 Graphics라는 클래스에 포함되어있는 drawRect(....)과 drawString(....)에 대해 아래에 설명하도록 하죠. drawRect 메쏘드 선언 : public void drawRect(int x, int y, int width, int height) 메쏘드 설명 : 이름에서도 알 수 있듯이 화면에 사각형을 그리는 메쏘드입 니다. 매 개 변 수 : x,y - 사각형이 그려질 시작 위치이고 width, height - 사각형의 너비 및 높이를 의미합니다. drawSting 메쏘드 선언 : public abstract drawSting(String str, int x, int y); 메쏘드 설명 : 눈치 빠르신 분들은 이미 아셨겠지만 이것은 지정한 String 을 화면에 그려(?) 주는 메쏘드 입니다. 매 개 변 수 : str - String객체로 화면에 쓰여질 스트링이며, x, y - 지정 스트링이 쓰여질 좌표를 나타냅니다. 이 밖에도 여러개의 메쏘드들이 더 있습니다만 다른 것들은 나중에 나올때 마다 언급하도록 하죠. 팁 위에 설명된 메쏘드와 Graphics클래스에 포함되어 있는 다른 메쏘드에 대해서 더욱 자세한 동작 원리나 소스를 보시고 싶으신 분들은 diva나 javaside에서 제공되어지는 기능에서, 에디터의 왼쪽 윈도우에 클래스 트리 (Tree)을 이용하도록 하세요. 물론 여러분의 디렉토리에 자바 클래스 압축 소스화일(src.zip)을 푸셔야 하겠지요. 아직까지 안 푸신 분들도 계시다구 요???? 그렇다면 지금 즉시 푸시고 diva나 javaside에 디렉토리를 set하세 요. set하는 방법은 diva나 javaside의 Options메뉴의 Setting에 Etc를 선택 하신후, Java source files필드에 아래와 같이 입력하시면 됩니다. .;c:\java\src;c:\java\work; 이것은 여러분의 작업 디렉토리 자, 이젠 메인 화면으로 돌아오셔서 위에서 작성하신 Simple.java 를 open 하신다음 메뉴바에서 '사람이 달리기 하는 그림(아닌가?)'의 왼쪽에 있는 아이콘(뭐라고 설명할지 몰라서 이렇게 길게 서술함에 용서를 빕니다.)을 선택하시면 왼쪽에 여러분의 코드에 사용된 클래스와 import 클래스의 트 리를 보여줌니다. import를 클릭하신후 java.awt.Graphics(Sample 에플렛에 는 이것 밖에 import하지 않았음)을 선택하시면 Graphics 클래스에 관련된 윈도우가 하나 더 생기는 것을 보실수 있을겁니다. 여기서 Graphics를 선 택하시면, 짠~~~~ 조금전 제가 설명했던 메쏘드의 이름이 보이시죠. 그럼 하나하나 선택하셔서 참고하시면 됩니다. 다음은 3번째 라인에 쓰인 public class Simple extends java.applet.Applet 에 대해 설명하자면, 이것은 Simple이라는 이름을 가진 에플렛을 만들고, 이 에플렛은 Applet 클래스로부터 계승되어 있다는 것을 나타냅니다. 앞에서도 말했듯이 자바 프로그램으로 에플렛을 만들고자 한다면, 꼭 Applet 클래스의 서브클래스 로 만들어야만 합니다. 따라서 이제부터 여러분께서 만드시는 모든 에플렛 에 정의 부분은 위와 같은 형식으로 정의 되야만 하는 것이죠. extends는 이렇게 계승을 목적으로 할 때 쓰여지는 키워드입니다. 4번째 라인의 StringBuffer buffer = new StringBuffer(); 는 StringBuffer 객체인 buffer를 메모리에 할당한다는 것을 의미합니다. 이미 배우셨던 new 키워드는 이렇게 메모리에 객체를 할당할 때 사용됩니다. 그럼 여기서 StingBuffer는무엇인가?? 이것은 Graphic 객체를 생성한 것 과 동일한 방법으로 StringBuffer객체를 생성하는 것을 의미합니다. 참고적 으로 이 클래스는 java.lang.StringBuffer로 정의되어 있습니다. 여러분 중 에 그럼 '왜 Graphic클래스는 import를 해서 사용하고 StringBuffer 클래 스는 그냥 사용하는가?'하고 생각하신 분이 계시다면, 그런 분들에게는 감 히 칭찬을 해드리고 싶군요.(건방지다고 생각지 마시고, 애교로 봐주세요. 헤헤..) 이것은 모든 자바 프로그램에서 java.lang에 속한 모든 클래스는 디 폴트로 import되기 때문입니다. 물론 여러분들 중에 굳이 import해서 사용 하고 싶다면 해도 되지만...... 따라서 StringBuffer객체인 buffer를 생성함으로 인해 StringBuffer 클래 스에 있는 메소드를 사용할 수 있습니다. 위의 Simple 예제에서는 22라인 의 addItem(...)에서 사용한 append(...)가 바로 StringBuffer 클래스에 있는 메쏘드입니다. 또한 30라인에 있는 toString()도 StringBuffer클래스에 정의 되어 있습니다. StringBuffer 클래스에 대해서는 추후에 자세히 설명 드리도록 하지요. 아래는 append(...) 메쏘드와 toSting() 메쏘드에 대한 설명입니다. append 메쏘드 형식 : public synchronized StringBuffer append(String str) 메쏘드 설명 : this 버퍼의 끝에 지정된 스트링 객체를 추가합니다. 매 개 변 수 : str - 추가하고자 하는 스트링입니다. (주: StingBuffer 클래스내에는 append 메쏘드가 한 개만 존재하는 것이 아니라, 오버로딩(overroding)된 append 메쏘드들이 여러개 존재합니다.) toString 메쏘드 형식 : public synchronized String toString() 메쏘드 설명 : 버퍼에 들어있는 데이터를 표시하는 String을 생성한다. 리 턴 값 : return new String(this) 오버라이드(Override) : toString in class Object 이것으로 오늘의 강좌는 마치도록 하겠습니다. 지금까지 수고하셨습니다. 다음 시간에는 아직 설명되어지지 않은 init(), start(), stop(), destroy(), paint(), repaint()를 설명하도록 하겠습니다. 간단히 개요를 말하자면, 이것 들은 에플렛의 Life Cycle을 이루는 것으로 에플렛으로부터 암시적으로 호 출되는 것들입니다.(아주 중요함). 그럼 다음시간까지 안녕히.............. 본문의 내용은 필자들의 동의 없이 reposting 되거나 수정 혹은 출판될 수 없습니다. 신세대 언어, 자바 전문가를 꿈꾸는 잠탱이 3인방, 신정호, 제갈영, 조국 </FONT>

관련글 더보기