Core API Tour 2:

java.awt , java.applet Package Tour!

Á¶ ±¹
138-229 ¼­¿ïƯº°½Ã Àá½Çº»µ¿ 193
¹Ì¼ÒÅ×Å© ±â¼ú°³¹ß½Ç
E-mail : venus@misotech.com
URL : http://misotech.com/~venus/
Abstract:
ÀÚ¹Ù API¿¡´Â 80³â´ë Á߹ݺÎÅÍ º¸ÆíÈ­µÇ¿© Àû¿ëµÇ°í ÀÖ´Â ±×·¡ÇÈ »ç¿ëÀÚ ÀÎÅÍÆäÀ̽º(GUI)¸¦ ±¸ÇöÇÒ ¼ö ÀÖµµ·Ï awt ÆÐŰÁö¸¦ Æ÷ÇÔÇϰí ÀÖÀ¸¸ç, ¶ÇÇÑ ÀÚ¹ÙÀÇ ºü¸¥ È®»ê¿¡ ¸¹Àº ±â¿©¸¦ ÇÑ ¾ÖÇø´, Áï ÀÚ¹Ù¸¦ Áö¿øÇÏ´Â ºê·Î¿ìÁ®¿¡¼­ µ¿ÀÛÇÏ´Â ÀÚ¹Ù ÇÁ·Î±×·¥À» ÀÛ¼ºÇÒ ¼ö ÀÖ°Ô ÇØÁÖ´Â applet ÆÐŰÁöµµ Æ÷ÇÔÇϰí ÀÖ´Ù.
º» Core API Tour 2 ¿¡¼­´Â ÀÌ·¯ÇÑ ÆÐŰÁöµé¿¡ ´ëÇÑ Àü¹ÝÀûÀÎ ÀÌÇØ¸¦ ¸ñÀûÀ¸·Î Ŭ·¡½º¿Í ÀÎÅÍÆäÀ̽º ±×¸®°í °¢°¢ÀÇ ¸Þ½îµåÀÇ ±â´É°ú ¿ªÇÒ¿¡ ´ëÇØ¼­ »ìÆìº»´Ù.
Keywords:
Java, API(Application Programming Interface), Package, WWW(World Wide Web), AWT(Abstract Window Toolkit), Applet, Application, GUI(Graphical User Interface)

1. java.awt ÆÐŰÁö

AWT´Â Abstract Window ToolkitÀÇ ¾àÀÚ·Î ¸¹Àº Cross-Flatform À©µµ¿ì ¶óÀ̺귯¸®¿¡ ÀÇÇØ ¸¸µé¾îÁø Á¦¾à¿¡¼­ ¹þ¾î³ª Windows, Motif µî ȯ°æ¿¡ ¹«°üÇÑ À©µµ¿ì »ý¼º ÅøÀ» Áö¿øÇÑ´Ù.

java.awt ÆÐŰÁö´Â Ç¥ÁØ GUI ÄÄÆ÷³ÍÆ®µéÀ» °¡Áö°í ÀÖ°í, À̰͵éÁß¿¡´Â ¿©·¯°³ÀÇ ´Ù¸¥ ÄÄÆ÷³ÍÆ®¸¦ ÀÚ½ÅÀÇ ¿µ¿ª¾È¿¡ Æ÷ÇÔÇÒ ¼ö ÀÖ´Â Container¶ó´Â Ưº°ÇÑ ÄÄÆ÷³ÍÆ®µéµµ ÀÖ´Ù. ¶ÇÇÑ ·¹À̾ƿô ¸Å´ÏÀú¶ó´Â °ÍÀÌ À־ ÄÁÅ×À̳ʿ¡ Æ÷ÇÔµÈ ÄÄÆ÷³ÍÆ®µéÀÇ ¹èÄ¡ ¸ð¾çÀ» ÁöÁ¤ÇÏ´Â ¹æ¹ýÀ» Á¦°øÇÑ´Ù. À̰Ϳܿ¡ À̺¥Æ®, ±×·¡ÇÈ, »ö, ÆùÆ® µî ¿©·¯°¡Áö GUI °ü·Ã Ŭ·¡½ºµéÀÌ Æ÷ÇԵǾî ÀÖ´Ù.

´ÙÀ½Àº java.awt ÆÐŰÁö Ŭ·¡½ºµéÀÇ °èÃþµµÀÌ´Ù.

 
   java.awt.Component (implements java.awt.image.ImageObserver*) 
       java.awt.Button
       java.awt.Label
       java.awt.Canvas
       java.awt.Checkbox
       java.awt.Choice
       java.awt.List
       java.awt.Scrollbar
       java.awt.TextComponent
           java.awt.TextField
           java.awt.TextArea
       java.awt.Container
           java.awt.Panel
               (java.applet.Applet*) 
          java.awt.Window
               java.awt.Frame (implements MenuContainer) 
               java.awt.Dialog
                   java.awt.FileDialog

   java.awt.MenuComponent 
       java.awt.MenuBar (implements java.awt.MenuContainer) 

       java.awt.MenuItem
           java.awt.Menu (implements java.awt.MenuContainer) 
           java.awt.CheckboxMenuItem

   java.awt.BorderLayout (implements java.awt.LayoutManager) 
   java.awt.CardLayout (implements java.awt.LayoutManager) 
   java.awt.FlowLayout (implements java.awt.LayoutManager) 
   java.awt.GridLayout (implements java.awt.LayoutManager) 
   java.awt.GridBagLayout (implements java.awt.LayoutManager) 

   java .awt.Event

   java.awt.Graphics 
   java.awt.Color
   java.awt.Font
   java.awt.FontMetrics

   java.awt.Point
   java.awt.Dimension
   java.awt.Rectangle
   java.awt.Polygon

   java.awt.Image
   java.awt.MediaTracker

   java.awt.Toolkit
   java.awt.CheckboxGroup
   java.awt.GridBagConstraints (implements java.lang.Cloneable*) 
   java.awt.Insets (implements java.lang.Cloneable*)


1.1 ÄÄÆ÷³ÍÆ®µé

1.1.1 Component Ŭ·¡½º

¸ðµç Ç¥ÁØ GUI ÄÄÆ÷³ÍÆ®µéÀÇ ¼öÆÛ Ŭ·¡½ºÀÌ´Ù. ÀÌ Å¬·¡½º´Â Ãß»óŬ·¡½º(abstract class) ·Î Á¤ÀÇ µÇ¾î Àֱ⠶§¹®¿¡ ÀνºÅϽºÈ­ ÇÏ¿© °´Ã¼¸¦ »ý¼ºÇÒ ¼ö ¾ø°í, ÀÌ Å¬·¡½º¸¦ »ó¼Ó ¹Þ´Â ¼­ºê Ŭ·¡½ºµéÀÇ °´Ã¼¸¦ »ý¼ºÇÏ¿© »ç¿ëÇÑ´Ù.

ÀÌ Å¬·¡½ºÀÇ ¸Þ½îµå´Â ´ë´ÜÈ÷ ¸¹À¸¸ç ¸ðµç ¼­ºê Ŭ·¡½ºµé¿¡¼­ »ç¿ëµÈ´Ù.

Event Ŭ·¡½º

À©µµ¿ì ÇÁ·Î±×·¥Àº À̺¥Æ® Á᫐ ÇÁ·Î±×·¡¹Ö ¹æ¹ýÀ» »ç¿ëÇÑ´Ù.

ÀÌ Å¬·¡½º¿¡´Â ¹ß»ýµÈ À̺¥Æ®¿¡ ´ëÇÑ Á¤º¸ÀÇ º¸°üÀ» À§ÇØ ´ÙÀ½°ú °°Àº º¯¼öµéÀÌ ÀÖÀ¸¸ç, À̺¥Æ®ÀÇ Çüųª ۰ª µîÀÇ »ó¼öµéÀ» °¡Áö°í ÀÖ´Ù.

¹ß»ýµÈ À̺¥Æ®ÀÇ Ã³¸®´Â ÀÏÂ÷ÀûÀ¸·Î Component Ŭ·¡½ºÀÇ handleEvent() ¿¡¼­ 󸮵Ǹç, ¿©±â¿¡¼­ °¢°¢ÀÇ À̺¥Æ® ÇüÅ¿¡ ¸Â´Â Çڵ鷯(action(), key****(), mouse****(), ***focus() µî)·Î °ü·ÃÁ¤º¸¿Í °°ÀÌ º¸³»Áø´Ù. Component Ŭ·¡½º¿¡ ÀÖ´Â ÀÌ·¯ÇÑ Çڵ鷯µéÀº ¾Æ¹«°Íµµ Á¤Àǰ¡ µÇ¾î ÀÖÁö ¾Ê±â ¶§¹®¿¡ ÀçÁ¤ÀÇ(overiding)ÇÏ¿© »ç¿ëÇÑ´Ù.

ÀνºÅϽº º¯¼ö

¿¹) À̺¥Æ® ó¸® ¿¹Á¦

public boolean handleEvent(Event e) { // Component ÀÇ handleEvnet()¿¡¼­ ó¸®ÇÏÁö ¾Ê´Â À̺¥Æ® 󸮽à // handleEvent()¸¦ ÀçÁ¤ÀÇÇÔ. if (e.id == Event.WINDOW_DESTROY) { dispose(); return true; } // ¼öÆÛŬ·¡½ºÀÇ handleEvent() ¸Þ½îµå¸¦ »ç¿ëÇÏ¿© // ÀÌ¹Ì ¿¬°áµÇ¾îÀÖ´Â À̺¥Æ® Çڵ鷯µéÀ» »ç¿ëÇϰíÀÚ ÇÔ. // ¸¸¾à ÇÊ¿äÇÏÁö ¾Ê´Ù¸é return false ¸¦ ¾´´Ù. return super.handleEvent(e); } public boolean action(Event e, Object arg) { /* ¾î¶² ÄÄÆ÷³ÍÆ®¿¡¼­ À̺¥Æ®°¡ ¹ß»ýÇß´ÂÁö °Ë»çÇÏ¿© °¢°¢ÀÇ ±â´ÉÀ» ÄÚµùÇÑ´Ù. ºñ±³ ¹æ¹ýÀº ¼¼°¡Áö°¡ Á¸ÀçÇÒ ¼ö ÀÖ´Ù. 1. arg Á¤º¸ ÀÌ¿ë : arg Á¤º¸°¡ °°Àº ¼­·Î ´Ù¸¥ ÄÄÆ÷³ÍÆ® Á¸Àç °¡´É¼º ÀÖÀ½ if ("OK".equals(arg)) {...} 2. instanceof ÀÌ¿ë : ¿©·¯°³ÀÇ µ¿ÀÏÇÑ ÄÄÆ÷³ÍÆ® Á¸Àç½Ã ´Ù½Ã ¼±Åù® ÇÊ¿ä. if (e.target instanceof Button) { ...} 3. Á÷Á¢ ºñ±³ : µ¿ÀÏÇÑ °´Ã¼¸íÀ» °¡Áú ¼ö ¾øÀ¸¹Ç·Î °¡Àå ¾ÈÀüÇÑ ¹æ¹ý Button btn; ... if (e.target == btn) { ... } 1 °ú 2 ¸¦ È¥ÇÕÇÏ¿© »ç¿ëÇÒ ¼öµµ ÀÖÀ½ */ ... } // À̺¥Æ® Çڵ鷯µéÀ» ÀçÁ¤ÀÇ ÇÏ¿© ±â´ÉÀ» ºÎ¿©ÇÔ. public boolean mouseDown(Event e, int x, int y) { if (e.modifiers == 0) { System.out.println("Left Button Down : ( " + x +", " + y + ")"); } else if (e.modifiers == 4) { System.out.println("Right Button Down : ( " + x +", " + y + ")"); } return false; } public boolean keyDown(Event e, int key) { System.out.println("Key Down : " + (char) key)); return false; }

1.1.2 Button Ŭ·¡½º

À̺¥Æ® Á¤º¸¹× Çڵ鷯

¿¹)

        Button btn = new Button("OK");
        add(btn);

1.1.3 Label Ŭ·¡½º

¶óº§ ÄÄÆ÷³ÍÆ®´Â ÄÁÅ×ÀÌ³Ê ¾È¿¡ ¾²¿©Áö´Â Àбâ Àü¿ëÀÇ ÅØ½ºÆ®ÀÌ´Ù.

»ó¼ö
¸Þ½îµå

¿¹)

        Label lbl = new Label("Are you Sure?");
        add(lbl);

1.1.4 Canvas Ŭ·¡½º

À¯¿ëÇÑ ±â´ÉÀ» °¡Áö°Ô Çϱâ À§Çؼ± ÀÌ Canvas Ŭ·¡½º¸¦ »ó¼ÓÇØ¼­ paint() ¸Þ½îµå¸¦ ÀçÁ¤ÀÇ(overiding)ÇØ¾ßÇÑ´Ù. ´ÜÁö Canvas Ŭ·¡½º´Â °ø¹éÀÇ »ç°¢¿µ¿ª¸¸À» È­¸é¿¡ Ãâ·ÂÇÑ´Ù.

1.1.5 Checkbox Ŭ·¡½º

üũ¹Ú½º´Â on/off, Áï true/false »óŸ¦ °®´Â ±×·¡ÇÈ ÄÄÆ÷³ÍÆ®ÀÌ´Ù.

üũ¹Ú½ºµéÀ» ±×·ìÁöÀ¸·Á¸é CheckboxGroup Ŭ·¡½ºÀÇ µµ¿òÀ» ¹Þ¾Æ¾ß ÇÑ´Ù. µ¿ÀÏÇÑ CheckboxGroup °´Ã¼·Î ¹­¿©Áø üũ¹Ú½ºµéÀº ¿ÀÁ÷ Çϳª¸¸ on »óŰ¡ µÉ¼ö ÀÖ´Ù.

À̺¥Æ® Á¤º¸¹× Çڵ鷯

¿¹)

        CheckboxGroup cbg = new CheckboxGroup();
        Checkbox cb1 = new Checkbox("High", cbg, true);
        Checkbox cb2 = new Checkbox("Middle", cbg, false);
        Checkbox cb3 = new Checkbox("Low", cbg, false);
        add(cb1);
        add(cb2);
        add(cb3);

1.1.6 Choice Ŭ·¡½º

ÃÊÀ̽º ÄÄÆ÷³ÍÆ®´Â ¼±Åà ÆË¾÷ ¸Þ´º¸¦ ³ªÅ¸³½´Ù.

À̺¥Æ® Á¤º¸¹× Çڵ鷯

¿¹)

        Choice choice = new Choice();
        choice.addItem("applet");
        choice.addItem("awt");
        choice.addItem("io");
        add(choice);

1.1.7 List Ŭ·¡½º

¸®½ºÆ® ÄÄÆ÷³ÍÆ®´Â ÀÚü ½ºÅ©·Ñ¹Ù¸¦ °¡Áö°í ÀÖÀ¸¸ç Ç׸ñÀ» ¼±ÅÃÇÏ°Ô ÇÑ´Ù. ÃÊÀ̽º ÄÄÆ÷³ÍÆ®¿Í´Â ´Ù¸£°Ô ´ÙÁß ¼±ÅÃÀÌ °¡´ÉÇÏ´Ù.

À̺¥Æ® Á¤º¸¹× Çڵ鷯

¿¹)

        List list = new List(4,false);
        // visible item #, multiSelection
        list.addItem("Java");
        list.addItem("C");
        list.addItem("C++");
        list.addItem("Visual Basic");
        list.addItem("Visual C++");
        add(list);

1.1.8 Scrollbar Ŭ·¡½º

½ºÅ©·Ñ¹Ù´Â ÀÏÁ¤ ¹üÀ§ÀÇ °ªÀ» ¼±ÅÃÇÒ¼ö ÀÖµµ·Ï ÇØÁÖ´Â Æí¸®ÇÑ µµ±¸ÀÌ´Ù.

»ó¼ö
¸Þ½îµå
À̺¥Æ® Á¤º¸¹× Çڵ鷯

¿¹)

        Scrollbar scroll = new Scrollbar(Scrollbar.HORIZONTAL, 0,10.0.100);
        // orientation, initial value, visible size, min, max
        add(scroll);

1.1.9 TextComponent Ŭ·¡½º

ÅØ½ºÆ®¸¦ ÆíÁýÇÒ ¼ö ÀÖ´Â ÄÄÆ÷³ÍÆ®µéÀÇ ¼öÆÛŬ·¡½ºÀÌ´Ù.

Text Field Ŭ·¡½º : ÇÑ ¶óÀÎÀÇ ÅØ½ºÆ® ÆíÁý

À̺¥Æ® Á¤º¸¹× Çڵ鷯

TextArea Ŭ·¡½º : ¿©·¯ ¶óÀÎÀÇ ÅØ½ºÆ® ÆíÁý

¿¹)

        TextField tf = new TextField(10);
        tf.setEchoCharacter('*');
        TextArea ta = new TextArea(10,10);
        add(tf);
        add(ta);

1.2 ÄÁÅ×ÀÌ³Ê¿Í ·¹À̾ƿô

ÄÁÅ×À̳ʴ ÀÚ½ÅÀÇ ¿µ¿ª¾È¿¡ ´Ù¸¥ ÄÄÆ÷³ÍÆ®(ÄÁÅ×ÀÌ³Ê Æ÷ÇÔ)¸¦ Æ÷ÇÔÇÒ ¼ö ÀÖ´Â ±â´ÉÀ» °¡Áö´Â ÄÄÆ÷³ÍÆ®ÀÌ´Ù. ¶ÇÇÑ ¿©·¯°³ÀÇ ÄÄÆ÷³ÍÆ®¸¦ Æ÷ÇÔÇϱ⠶§¹®¿¡ ±×°ÍµéÀÇ ¹èÄ¡¸ð¾çÀ» Á¤ÇØÁÖ¿©¾ß ÇÑ´Ù. ÀÌ·¯ÇÑ ¹èÄ¡ ¹æ¹ýÀ» Á¤ÇسõÀº °ÍÀÌ ·¹À̾ƿô ¸Å´ÏÀúµéÀ̸ç, ¸¸¾à Á¤ÇØÁÖÁø ¾Ê´Â´Ù¸é µðÆúÆ®·Î Á¤ÇØÁ® ÀÖ´Â ·¹À̾ƿô ¸Å´ÏÀú¸¦ »ç¿ëÇÑ´Ù.

´ÙÀ½Àº ·¹À̾ƿô ¸Å´ÏÀú Ŭ·¡½º°ú ¹èÄ¡ ÇüŸ¦ º¸¿©ÁØ´Ù.

1.2.1 Container Ŭ·¡½º

Container Ŭ·¡½º´Â Ãß»óŬ·¡½º·Î Á¤ÀǵǾî ÀÖÀ¸¹Ç·Î Á÷Á¢ °´Ã¼¸¦ »ý¼ºÇÒ ¼ö ¾ø°í, À̰ÍÀÇ ¼­ºê Ŭ·¡½ºµéÀ» »ç¿ëÇÑ´Ù.

1.2.2 Panel Ŭ·¡½º

ÆÐ³ÎÀº °¡Àå °£´ÜÇÑ ÄÁÅ×À̳ÊÀÌ´Ù. À̰ÍÀº ´Ù¸¥ ¾î¶°ÇÑ ÄÄÆ÷³ÍÆ®(´Ù¸¥ ÆÐ³Îµµ Æ÷ÇÔ) µµ ÀÚ½ÅÀÇ °ø°£¾È¿¡ Ãß°¡ÇÒ ¼ö ÀÖ´Ù.

À̰ÍÀÇ µðÆúÆ® ·¹À̾ƿô ¸Å´ÏÀú´Â FlowerLayoutÀÌ´Ù.
¿¹)

        Panel pnl = new Panel();
        pnl.add(new Button("OK");
        pnl.add(new Button("Cancel");
        add(pnl);

1.2.3 Window Ŭ·¡½º

Window´Â ž·¹º§ À©µµ¿ì ÄÄÆ÷³ÍÆ®ÀÌ´Ù. º¸´õ(border)¿Í ¸Þ´º¹Ù¸¦ °¡Áö°í ÀÖÁö ¾Ê´Ù. À̰ÍÀÇ µðÆúÆ® ·¹À̾ƿô ¸Å´ÏÀú´Â BorderLayout ÀÌ´Ù.

1.2.4 Frame Ŭ·¡½º

ŸÀÌÆ²°ú º¸´õ¸¦ °¡Áö´Â ž·¹º§ À©µµ¿ì. ¶ÇÇÑ ¸Þ´º¹Ù¸¦ °¡Áú¼ö ÀÖÀ¸¸ç Ä¿¼­¿Í ¾ÆÀÌÄÜ À̹ÌÁö¸¦ ¼³Á¤ÇÒ ¼öµµ ÀÖ´Ù. À̰ÍÀÇ µðÆúÆ® ·¹À̾ƿô ¸Å´ÏÀú´Â BorderLayout ÀÌ´Ù. ÁÖ·Î ¾îÇø®ÄÉÀ̼ÇÀÇ ¸ÞÀÎ À©µµ¿ì·Î »ç¿ëµÈ´Ù.

¿¹)

        import java.awt.*;
        public class MainWin extends Frame {
                public MainWin() {
                        super("Main Window");
                        Panel p = new Panel();
                        add(new Button("OK"));
                        add(new Button("Cancel"));

                        add("South", p);
                        pack();
                }

                public static void main(String args[]) {
                        MainWin win = new MainWin();
                        win.resize(200,200); 
                        win.show();
                }
        }

1.2.5 Dialog Ŭ·¡½º

»ç¿ëÀÚ¿¡°Ô ÀϽÃÀûÀÎ Á¤º¸¸¦ º¸¿©Áְųª Á¤º¸¸¦ ¾ò±âÀ§ÇÑ À©µµ¿ìÀÌ´Ù. À̰ÍÀÇ µðÆúÆ® ·¹À̾ƿô ¸Å´ÏÀú´Â BorderLayoutÀÌ´Ù.

1.2.6 FileDialog Ŭ·¡½º

»ç¿ëÀڷκÎÅÍ È­ÀÏ ¼±ÅÃÀ» °¡´ÉÇÏ°Ô ÇØÁÖ´Â ´ÙÀ̾ó·Î±× À©µµ¿ìÀÌ´Ù.

»ó¼ö
¸Þ½îµå

¿¹) FileDialog¿¡¼­ÀÇ È­Àϼ±Åà ¹æ¹ýÀÌ´Ù.

        public boolean action(Event e, Object arg) {
                if ("Open".equals(arg)) {
                        fd = new FileDialog(this, "Open", FileDialog.LOAD);
                        fd.show();
                        // ÇöÀç ¼±ÅÃµÈ È­ÀϸíÀ» °¡Á®¿Â´Ù.
                        String file = fd.getFile();
                        // È­ÀÏÀ» ¿­¾î Á¤º¸¸¦ °¡Á®¿À´Â Äڵ尡 ÇÊ¿äÇÏ´Ù.
                        ...
                        return true;
                }
        }

1.3 ¸Þ´º ÄÄÆ÷³ÍÆ®

1.3.1 MenuComponent Ŭ·¡½º

¸ðµç ¸Þ´º ÄÄÆ÷³ÍÆ®µéÀÇ ¼öÆÛŬ·¡½º·Î Ãß»óŬ·¡½º·Î Á¤ÀǵǾîÀÖ´Ù.

1.3.2 MenuBar Ŭ·¡½º

ÇÁ·¹ÀÓ¿¡ Æ÷ÇԵǴ ¸Þ´º¹Ù ÄÄÆ÷³ÍÆ®ÀÌ´Ù.

ÇÁ·¹ÀÓ¿¡ ¸Þ´º¹Ù¸¦ Æ÷ÇÔÇÏ·Á¸é Frame Ŭ·¡½ºÀÇ setMenubar() ¸Þ½îµå¸¦ È£ÃâÇØ¾ß ÇÑ´Ù.

1.3.3 MenuItem Ŭ·¡½º

¸Þ´º¾ÈÀÇ ¸ðµç ¾ÆÀÌÅÛµéÀº MenuItem Ŭ·¡½º³ª À̰ÍÀÇ ¼­ºê Ŭ·¡½ºÀÌ¿©¾ß ÇÑ´Ù.

1.3.4 Menu Ŭ·¡½º

¸Þ´º´Â ¸Þ´º¹ÙÀÇ Ç®´Ù¿î ÄÄÆ÷³ÍÆ®À̸ç, tear-off ¸Þ´º·Î ¸¸µé ¼öµµ ÀÖ´Ù.

1.3.5 CheckboxMenuItem Ŭ·¡½º

¸Þ´º¿¡ Æ÷ÇԵǴ üũ¹Ú½º¸¦ ±¸ÇöÇÑ´Ù.

¿¹) °¢Á¾ ¸Þ´ºÄÄÆ÷³ÍÆ®µéÀ» »ç¿ëÇÏ¿© Ç®´Ù¿î ¸Þ´º¸¦ ¸¸µå´Â ¿¹ÀÌ´Ù.

        Frame f = new Frame("Example Menu");
        MenuBar mbar = new MenuBar();

        Menu m1 = new Menu("File");
        m1.add(new MenuItem("Open"));
        m1.add(new CheckboxMenuItem("Show Java Console"));

        Menu sub = new Menu("Document Encoding");
        sub.add(new MenuItem("English"));
        sub.add(new MenuItem("Korean"));

        m1.add(sub);
        m1.addSeparator();
        m1.add(new MenuItem("Quit"));

        Menu m2 = new Menu("Help");
        m2.add(new MenuItem("About..."));
        m2.add(new MenuItem("How to..."));

        mbar.add(m1);
        mbar.setHelpMenu(m2);

        f.setMenuBar(mbar);

1.3 ±×¹ÛÀÇ Å¬·¡½ºµé

1.3.1 Graphics Ŭ·¡½º

¾îÇø®ÄÉÀ̼ǿ¡¼­ ÄÄÆ÷³ÍÆ®³ª off-screen À̹ÌÁöÀ¸·ÎÀÇ ±×¸®±âÀ» °¡´ÉÇÏ°Ô ÇØÁÖ´Â ¸ðµç graphics context¸¦ À§ÇÑ Ãß»óŬ·¡½ºÀÌ´Ù.

¿¹)

        public void paint(Graphics g) {
                g.setColor(Color.red);
                g.setFont(new Font(" TimesRoman",Font.BOLD, 20); 
                g.drawRect(10,10,100,100); 
                g.drawString("Graphics Methods" 10,40); 
        }

1.3.2 Color Ŭ·¡½º

RGB Çü½ÄÀ» »ç¿ëÇÏ´Â »öÀ» ĸ½¶È­ÇÑ Å¬·¡½ºÀÌ´Ù. °¢ ¼ººÐÀº 0¿¡¼­ 255ÀÇ °ªÀ» °¡Áø´Ù. ÀÌ Å¬·¡½º¿¡´Â ´ÙÀ½°ú °°Àº final static Color º¯¼ö°¡ ÀÖ¾î »ç¿ë¿¡ ÆíÀǸ¦ ÁÖ°í ÀÖ´Ù.

black, blue, cyan, darkGray, gray, green, lightGray, magenta, orange, pink, red, white, yellow

¿¹) ¾Æ·¡´Â ¼­·Î µ¿ÀÏÇÑ °ªÀ» ³ªÅ¸³½´Ù.

1.3.3 Font Ŭ·¡½º

ÆùÆ®¸¦ ³ªÅ¸³»´Â Ŭ·¡½º·Î ¼¼°¡Áö Á¤º¸¸¦ ÁöÁ¤ÇÑ´Ù.

¿¹) new Font("TimesRoman", Font.BOLD+Font.ITALIC, 20);

1.3.4 FontMetrics Ŭ·¡½º

ÁöÁ¤ ÆùÆ®ÀÇ Å©±â¸¦ ÃøÁ¤ÇÏ¿© ƯÁ¤À§Ä¡¿¡ ¹®ÀÚµéÀ» ³õ´Âµ¥ »ç¿ëÇÑ´Ù.

1.3.5 Image Ŭ·¡½º

Ãß»óŬ·¡½º·Î À̹ÌÁö¸¦ ³ªÅ¸³»´Â ¸ðµç Ŭ·¡½ºÀÇ ¼öÆÛŬ·¡½º ÀÌ´Ù.

1.3.6 MediaTracker Ŭ·¡½º

MediaTracker ´Â ¸¹Àº ¹Ìµð¾î °´Ã¼ÀÇ »óŸ¦ ÃßÀûÇϱâ À§ÇÑ À¯Æ¿¸®Æ¼ Ŭ·¡½ºÀÌ´Ù. ¹Ìµð¾î °´Ã¼´Â À̹ÌÁö»Ó¾Æ´Ï¶ó ¿Àµð¾î Ŭ¸³À» ¸»ÇÑ´Ù. ±×·¯³ª ÇöÀç´Â À̹ÌÁö¿¡¸¸ Áö¿øµÈ´Ù.

¿¹) ´ÙÀ½Àº ¾ÖÇø´¿¡¼­ MediaTracker¸¦ »ç¿ëÇÏ´Â °£´ÜÇÑ »ç¿ë¿¹ÀÌ´Ù.

        MediaTracker tracker;
        Image img;
        public void init() {
                tracker = new MediaTracker(this);
                img = getImage(getDocumentBase(), "image/sample.gif");
                addImage(img, 0);
                try {
                        waitForID(0);
                } catch (InterruptedException e) {
                        break;
                }
        }

1.3.7 Tookit Ŭ·¡½º

Toolkit Ŭ·¡½º´Â Ãß»óŬ·¡½ºÀ̸ç, AWTÀÇ ¸ðµç ½ÇÁ¦ÀûÀÎ ±¸ÇöÀÇ ¼öÆÛŬ·¡½ºÀÌ´Ù.

¿¹) ´ÙÀ½Àº ¾îÇø®ÄÉÀ̼ǿ¡¼­ À̹ÌÁö¸¦ ·ÎµùÇϱâ À§ÇØ ToolkitÀ» »ç¿ëÇÑ °£´ÜÇÑ ¿¹ÀÌ´Ù.

        Image img;
        Toolkit toolkit = Toolkit.getDefaultToolkit();
        img = toolkit.getImage("image/sample.gif");

À§ÀÇ Å¬·¡½º À̿ܿ¡µµ awt ÆÐŰÁö¿¡´Â ´ÙÀ½°ú °°Àº Ŭ·¡½ºµéÀÌ ÀÖ´Ù.


2. java.awt.image ÆÐŰÁö

java.awt.image ÆÐŰÁö´Â Àú ¼öÁØÀÇ À̹ÌÁö µ¥ÀÌÅÍ Ã³¸®¸¦ À§ÇÑ Å¬·¡½ºµé°ú ÀÎÅÍÆäÀ̽º·Î ±¸¼ºµÇ¾î ÀÖ´Ù. Å©°Ô À̹ÌÁö »ý»êÀÚµé(ImageProducers), À̹ÌÁö ¼ÒºñÀÚµé(ImageConsummers), Ä÷¯¸ðµ¨µé(ColorModels), ±×¸®°í À̹ÌÁö °üÂûÀÚ(ImageObsever)·Î ±¸¼ºµÇ¾îÀÖ´Ù.


Classes

        java.awt.image.MemoryImageSource (implements java.awt.image.ImageProducer) 
        java.awt.image.FilteredImageSource (implements java.awt.image.ImageProducer) 

        java.awt.image.PixelGrabber (implements java.awt.image.ImageConsumer) 
        java.awt.image.ImageFilter (implements java.awt.image.ImageConsumer) 
                java.awt.image.CropImageFilter
                java.awt.image.RGBImageFilter

        java.awt.image.ColorModel
                java.awt.image.DirectModel
                java.awt.image.IndexColorModel

Interfaces

        java.awt.image.ImageObserver
        java.awt.image.ImageProducer
        java.awt.image.ImageConsumer

3. java.awt.peer ÆÐŰÁö

java.awt.peer ´Â AWT ÄÄÆ÷³ÍÆ®µéÀ» Motif widgets ³ª MS Windows ÄÁÆ®·Ñ°ú °°Àº Ç÷§Æû ƯÁ¤ ±¸Çö¿¡ ¿¬°áÇØÁÖ´Â ÆÐŰÁöÀÌ´Ù. ÀÌ ÆÐŰÁö¿¡´Â Ŭ·¡½º´Â Á¤ÀǵǾî ÀÖÁö ¾Ê°í, AWT ÄÄÆ÷³ÍÆ®¿Í °ü·ÃµÈ ÀÎÅÍÆäÀ̽º¸¸ Á¸ÀçÇÑ´Ù.

4. java.applet ÆÐŰÁö

java.applet ÆÐŰÁö´Â ÀÚ¹Ù ¾ÖÇø´ ÀÛ¼ºÀ» À§ÇØ ²À ÇÊ¿äÇÑ Applet Ŭ·¡½º¿Í ¾ÖÇø´¿¡¼­ »ç¿ëÇÒ ¼ö ÀÖ´Â ¸î¸î ÀÎÅÍÆäÀ̽º¸¦ °¡Áö°í ÀÖ´Ù.

(*java.awt.Panel) 
                java.applet.Applet

¾ÖÇø´Àº ¾îÇø®ÄÉÀ̼ǰú´Â ´Þ¸® main() ¸Þ½îµå¸¦ °¡Áö°í ÀÖÁö ¾ÊÀ¸¸ç, ´ë½Å Applet Ŭ·¡½ºÀÇ init(), start(), stop(), destroy() ¸Þ½îµåµîÀ» ÀçÁ¤ÀÇÇÏ¿© µ¿ÀÛÀ» ÇϰԵȴÙ.

¾ÖÇø´Àº À¥ ºê·Î¿ìÁ®¿¡¼­ ½ÇÇàµÇ±â À§Çؼ­ HTML¹®¼­¿¡ <applet> ű׸¦ »ç¿ëÇÏ¿© µ¿ÀÛÇÒ ¹ÙÀÌÆ® ÄÚµåÀÎ class ÆÄÀÏÀ» ÁöÁ¤ÇÑ´Ù.

¿¹)

<APPLET CODE = sample.class WIDTH=300 HEIGHT = 300>
</APPLET>

4.1 Applet Ŭ·¡½º

¸ðµç ¾ÖÇø´, Áï ÀÚ¹Ù¸¦ Áö¿øÇÏ´Â ºê·Î¿ìÁ®¿¡¼­ µ¿ÀÛÇÏ´Â ÇÁ·Î±×·¥Àº ¹Ýµå½Ã Applet Ŭ·¡½º¸¦ »ó¼ÓÇØ¾ßÇÑ´Ù. Applet Ŭ·¡½º´Â ¶ÇÇÑ ¾ÖÇø´°ú ±×°ÍÀÇ È¯°æ»çÀÌ¿¡ Ç¥ÁØ ÀÎÅÍÆäÀ̽º¸¦ Á¦°øÇÑ´Ù.

À§ÀÇ ¸Þ½îµåµéÀº ¾ÖÇø´ÀÇ Life Cycle°ú °ü·ÃµÈ ¸Þ½îµåµéÀÌ¸ç ¾ÖÇø´¿¡¼­ ¹Ýµå½Ã ÀçÁ¤ÀÇ ÇÒ ÇÊ¿ä´Â ¾ø´Ù. ¿¹¸¦ µé¾î ´ÜÁö À¥ ºê·Î¿ìÁ®»ó¿¡ ÅØ½ºÆ®¸¦ Ãâ·ÂÇÏ´Â ÇÁ·Î±×·¥ÀÎ °æ¿ì À§ÀÇ 4°¡Áö ¸Þ½îµåµéÀº ÀçÁ¤ÀÇ ÇÒ Çʿ䰡 ¾øÀ» °ÍÀÌ´Ù. ´ÙÀ½ÀÇ ¿¹Á¦¸¦ ÅëÇØ ¾ÖÇø´ÀÌ ¾î¶»°Ô µ¿À۵Ǵ°¡¸¦ º¸µµ·Ï ÇÏÀÚ.

¿¹)

        import java.awt.*;
        import java.applet.Applet;
        public class AppletSample extends Applet {
                public void init() {
                        System.out.println("Initialize...")
                }
                public void start() {
                        System.out.println("Start...");
                }
                public void stop() {
                        System.out.println("Stop...");
                }
                public void destroy() {
                        System.out.println("Destroy...");
                }
        }
        // HTML file
        <applet code=SampleApplet.class width=300 height=300>
        <param name="str" value="Welcome!!!">
        <param name="delay" value="100">
        </applet>

        // java file
        String message;
        int wait;
        public void init() {
                String str = getParameter("text");
                message = (str != null) ? str : "Default Text";
                str = getParameter("delay");
                delay = (str != null) ? Integer.parseInt(str) : 1000;
        }

¿¹)

        import java.awt.*;
        import java.applet.Applet;
        public class SampletApplet extends Applet { 
                Image img;
                public void init() {
                        img = getImage(getDocumentBase(), "image/sample.gif");
                }

                public void paint(Graphics g) {
                g.drawImage(img, 0, 0, this);
                showStatus("Drawing Image");
                }
        }

4.2 AudioClip ÀÎÅÍÆäÀ̽º

AudioClip ÀÎÅÍÆäÀ̽º´Â »ç¿îµå Ŭ¸³À» µ¿ÀÛ½Ã۱âÀ§ÇÑ ´Ü¼øÇÑ Ãß»óÈ­ÀÌ´Ù.

¿¹)

        AudioClip ac = getAudioClip(getDocumentBase(), "sound/sample.au");
        ac.play();
        ac.loop();
        ac.stop();

4.3 AppletContext ÀÎÅÍÆäÀ̽º

AppletContext ÀÎÅÍÆäÀ̽º´Â ¾ÖÇø´ÀÇ È¯°æ¿¡ ÇØ´çÇÑ´Ù. Áï ¾ÖÇø´À» Æ÷ÇÔÇϰí ÀÖ´Â ¹®¼­ ±×¸®°í °°Àº ¹®¼­¾ÈÀÇ ´Ù¸¥ ¾ÖÇø´.

ÀÌ ÀÎÅÍÆäÀ̽º¾ÈÀÇ ¸Þ½îµåµéÀº ¾ÖÇø´ÀÇ È¯°æ¿¡ ´ëÇÑ Á¤º¸¸¦ ¾ò±âÀ§Çؼ­ ¾ÖÇø´¿¡¼­ »ç¿ëµÉ ¼ö ÀÖ´Ù.

¿¹)

        AppletContext context = getAppletContext();
        try {
                context.showDocument("http://misotech.com/index.html"); 
        } catch (MalformedURLException e) {
                System.out.println(e);
        }

5. °á·Ð

Áö±Ý±îÁö awt¿Í applet ÆÐŰÁö¿¡ ´ëÇØ¼­ »ìÆìº¸¾Ò´Ù. ÇöÀçÀÇ »ç¿ëµÇ´Â ´ëºÎºÐÀÇ ÇÁ·Î±×·¥Àº GUI¸¦ Áö¿øÇÑ´Ù°í º¼ ¼ö ÀÖ´Ù. µû¶ó¼­ awt ÆÐŰÁö´Â ÇÁ·Î±×·¥ ÀÛ¼º¿¡ »ó´çÈ÷ Áß¿äÇÑ ºÎºÐÀ̶ó ÇÒ ¼ö ÀÖ´Ù. ºñ·Ï ÀÚ¼¼ÇÏ°Ô ¼³¸íµÇ¾îÁöÁö´Â ¾Ê¾ÒÁö¸¸ °è¼ÓÀûÀÎ °ü½ÉÀ» °®°í ¿¬±¸Çغ¼¸¸ÇÑ ºÎºÐÀ̶ó ÇÒ¼ö ÀÖ´Ù. ¶ÇÇÑ ÀÌ ºÎºÐÀº °è¼ÓÀûÀ¸·Î °³¹ßµÇ°í ÀÖÀ¸¸ç ´õ ³ªÀº ¹æÇâÀ¸·Î ¹ßÀüÇϰí ÀÖÀ¸¹Ç·Î »õ·Î¿î ¹öÁ¯¿¡ ´ëÇØ Ç×»ó °ü½ÉÀ» °¡Á®¾ß ÇÒ °ÍÀÌ´Ù.

applet ÆÐŰÁö´Â ´ëºÎºÐ »ç¶÷µéÀÇ °ü½É ´ë»óÀÌÁö¸¸ Applet Ŭ·¡½º ÀÚüÀÇ ¸Þ½îµå´Â ¸î°¡Áö ¹Û¿¡ ¾ø¾ú´Ù. ´ëºÎºÐÀÇ »ç¿ë ¸Þ½îµåµéÀº ÀÚ½ÅÀÇ ¼öÆÛŬ·¡½ºµé(Component Ŭ·¡½ºµî) ¶Ç´Â ´Ù¸¥ °ü·Ã ÆÐŰÁö µéÀÇ Å¬·¡½º¸¦ import ÇÏ¿© »ç¿ëÇϹǷΠÀÌ·±°Í¿¡ À¯ÀÇÇÏ¿© °ü·Ã ¸Þ½îµå¸¦ »ìÆì¾ß ÇÒ °ÍÀÌ´Ù.

¶ÇÇÑ »õ·Î¿î JDK ¹öÁ¯(JDK 1.1)ÀÌ °ð ³ª¿Â´Ù´Ï ±â´ë¸¦ ÇØº¸ÀÚ.

Âü°í¹®Çå(References)

[Sun 96a]
JavaSoft, Java API Documentation, 1996
URL: http://www.javasoft.com:80/products/J DK/1.0.2/api/
[Sun 96b]
JavaSoft, The Java Tutorial, 1996
URL: http://www.javasoft.com/books/ Series/Tutorial/index.html
[Elliotte 96]
Elliotte Rusty Harold, Brewing Java: A Tutorial, 1996.
URL: http://sunsite.unc.edu/javafaq/javatutorial.ht ml
[Á¶±¹ 96]
½ÅÁ¤È£, Á¦°¥¿µ, Á¶±¹, ÀÚ¹Ù¸¦ ÀÚ¹Ù¶ó, ¹Ì·¡Á¤º¸»ç, 1996
URL: http://www.misotech.com/~mikimous/java/book/