¼Ò¼³°°ÀºÀÚ¹Ù3ºÎ  13Àå AWT  13.8 Event  

13.8 Event Listener

 

 

13.8.1 Action Event ¿Í ActionListener

 

 ActionEvent´Â AWTEventŬ·¡½º¸¦ »ó¼ÓÇØ¼­ »ç¿ëµÇ¾îÁö´Â AWT ÆÐŰÁöÀÇ Å¬·¡½ºÀÔ´Ï´Ù.  ActionEventÀÇ »ó¼ÓÀº ´ÙÀ½°ú °°ÀÌ ÀÌ·ç¾îÁý´Ï´Ù.

 

n        public class ActionEvent extends AWTEvent

 

ActionEvent´Â °¢ ÄÄÆ÷³ÍÆ®°¡ Á¤ÀÇÇϰí ÀÖ´Â ¾×¼ÇÀÌ ¹ß»ýÇßÀ» ¶§, ±× ¹ß»ýÇÑ À̺¥Æ®ÀÇ ¸ðµç Á¤º¸¸¦ °¡Áö°í Àִ Ŭ·¡½ºÀÔ´Ï´Ù. ¿¹¸¦ µé¾î, ¹öư ÄÄÆ÷³ÍÆ®¿¡¼­ ¹öưÀÌ ´­·ÈÀ» °æ¿ì, MenuItemÀº ¸Þ´º°¡ ¼±ÅõÆÀ» °æ¿ì, TextField´Â Űº¸µå ÀÔ·ÂÀÌ »ý°åÀ» °æ¿ì¿¡ ÀÌ·¯ÇÑ ActionEvent°¡ ¹ß»ýÇÕ´Ï´Ù. ¾Æ·¡ Ç¥¿¡ ActionEvent¸¦ ¹ß»ýÇÏ´Â ÄÄÆ÷³ÍÆ®¸¦ Á¤¸®ÇÏ¿´½À´Ï´Ù.

 

ActionEvent¸¦ ¹ß»ýÇÏ´Â ÄÄÆ÷³ÍÆ®

n         Button : Ŭ¸¯ÇßÀ» ¶§

n         List : Ŭ¸¯ÇßÀ» ¶§

n         TextField : ¿£ÅÍ۸¦ ÃÆÀ» ¶§

n         MenuItem : Ŭ¸¯ÇßÀ» ¶§

n         À§ ÄÄÆ÷³ÍÆ®¸¦ »ó¼ÓÇÏ´Â ¸ðµç ÄÄÆ÷³ÍÆ®µé(CheckboxMenuItem, Menu, PopupMenu)

 

ÀÌ·¯ÇÑ ¾×¼Ç À̺¥Æ®´Â ÄÄÆ÷³ÍÆ®¿¡ µû¶ó °¢°¢ Á¤ÀǵǾî ÀÖ½À´Ï´Ù. ÄÄÆ÷³ÍÆ®ÀÇ addActionListener ¸Þ¼­µå¸¦ ÀÌ¿ëÇÏ¿© ¾×¼Ç À̺¥Æ®¸¦ ó¸®ÇÒ ActionListener °´Ã¼¸¦ µî·ÏÇÒ ¼ö ÀÖ°í, ÀÌ·¸°Ô µî·ÏµÈ ¸ðµç ActionListener°´Ã¼¿¡ ¾×¼Ç À̺¥Æ®°¡ Àü´ÞµÇ¾î 󸮵ǵµ·Ï ÇÕ´Ï´Ù. À̶§, ActionListener°´Ã¼´Â ActionListenerÀÎÅÍÆäÀ̽º ÇüÅ·Π±¸ÇöµÇ¾îÁý´Ï´Ù.

ActionEvent´Â ÇϳªÀÇ ActionListener¸¸ ÀÛ¼ºÇÏ¸é ¿©·¯ ÄÄÆ÷³ÍÆ®µé¿¡ »ç¿ëÇÒ ¼ö ÀÖ´Ù´Â À¯¿ë¼º ¶§¹®¿¡ ÀÚÁÖ »ç¿ëµÇ°í ÀÖ½À´Ï´Ù. ±×·³ ¿¹Á¦¸¦ ÅëÇØ Á»´õ ÀÚ¼¼È÷ ¾Ë¾Æº¸µµ·Ï ÇϰڽÀ´Ï´Ù.

 

  ´ÙÀ½Àº ¹öưÀ» Ŭ¸¯Çϸé ActionEvent¸¦ ÀÌ¿ëÇØ¼­ ÅØ½ºÆ® ÇʵåÀÇ ¹è°æ»ö»ó°ú ±ÛÀÚ¸¦ »ðÀÔÇÏ´Â ¿¹Á¦ÀÔ´Ï´Ù. ±ÛÀÚ¸¦ »ðÀÔÇÒ ¶§´Â getActionCommand() ¸Þ¼­µå¸¦ »ç¿ëÇÏ¿´´Âµ¥, ¹«¾ùÀ» ¹ÝȯÇÏ´ÂÁö Á÷Á¢ ½ÇÇàÇØ¼­ È®ÀÎÇϽʽÿÀ. ±×·¯¸é ÀÌÇØ°¡ ÈξÀ ½¬¿ï °ÍÀÔ´Ï´Ù.

 

ActionEventTest.java(¹öưÀ» ÀÌ¿ëÇØ ActionEvent¸¦ ½ÇÇàÇÑ ¿¹Á¦)

import java.awt.*;

import java.awt.event.*;

class ActionEventTest1 extends Frame {

   Button b1, b2;

   TextField tf1;

   public ActionEventTest1(){

       setLayout(new FlowLayout());

       ActionListener al = new ActionListener(){

        public void actionPerformed(ActionEvent ae) {

             if(ae.getSource() == b1) {

                b1.setEnabled(false);

                b2.setEnabled(true);

                tf1.setBackground(Color.yellow);

                tf1.setText(ae.getActionCommand());

             }else {

                b1.setEnabled(true);

                b2.setEnabled(false);

                tf1.setBackground(Color.white);

                tf1.setText(ae.getActionCommand());

             }

          }

       };

       this.b1 = new Button("Enable");

       this.b2 = new Button("Disable");

       this.b2.setEnabled(false);

       this.tf1 = new TextField(4);

       this.b1.addActionListener(al);

       this.b2.addActionListener(al);

       this.add(b1);

       this.add(b2);

       this.add(tf1);

   }

   public static void main(String args[]) {

       ActionEventTest1 f = new ActionEventTest1();

       f.pack();

       f.setVisible(true);

   }

}

C:\javaFile\awtEvent>javac ActionEventTest.java

C:\javaFile\awtEvent>java ActionEventTest

  ¡¤ óÀ½ È­¸é                   ¡¤ ¡°Enable¡±À» Ŭ¸¯½Ã         ¡¤ ¡°Disable¡±À» Ŭ¸¯½Ã

 

 

ActionEventŬ·¡½ºÀÇ ¿¹Á¦¸¦ À§ÇÑ ActionEventTestŬ·¡½ºÀÔ´Ï´Ù. Á¦ÀÏ ¸ÕÀú À̺¥Æ®¸¦ ¹ß»ýÇÏ°Ô Çϱâ À§Çؼ­ À̺¥Æ® ÆÐŰÁö¸¦ import ½Ãŵ´Ï´Ù.

 

n        import java.awt.event.*;

 

ActionListener ÀÎÅÍÆäÀ̽º´Â ¾×¼Ç À̺¥Æ®¸¦ ¹Þ¾Æ¼­ ó¸®ÇÒ ¸®½º³Ê°¡ ±¸ÇöÇØ¾ß ÇÒ ±â´ÉÀ» Á¤ÀÇÇϰí ÀÖ´Â ÀÎÅÍÆäÀ̽ºÀÔ´Ï´Ù. µû¶ó¼­, ¾×¼Ç À̺¥Æ®¸¦ ó¸®ÇÒ Å¬·¡½º´Â ÀÌ ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇØ¾ß ÇÏ´Â °ÍÀÔ´Ï´Ù. °´Ã¼¸¦ »ý¼ºÇÑ ÈÄ¿¡´Â ¾×¼Ç À̺¥Æ®¸¦ ó¸®ÇÒ ÄÄÆ÷³ÍÆ®ÀÇ addActionListener()¸Þ¼­µå¸¦ ÀÌ¿ëÇÏ¿© ÄÄÆ÷³ÍÆ®¿¡ µî·ÏÇÏ°Ô µË´Ï´Ù. ¾×¼ÇÀÌ ¹ß»ýÇßÀ» °æ¿ì, ActionListener´Â ´ÙÀ½°ú °°ÀÌ ActionEvent¸¦ ÀÎÀÚ·Î ÇÑ actionPerformed() ¸Þ¼­µå¸¦ ³»ºÎÀûÀ¸·Î È£ÃâÇÏ°Ô µÇ´Â °ÍÀÔ´Ï´Ù.

 

n        ActionListener al = new ActionListener() {

n            public void actionPerformed(ActionEvent ae) {

// ½ÇÁ¦ ±¸Çö

n            }

n        };

n        b1.addActionListener(al);

 

getSource()¸Þ¼­µå´Â À̺¥Æ®°¡ ¹ß»ýÇÑ À̺¥Æ® ¼Ò½º(Event Source) °´Ã¼¸¦ ObjectÇüÀ¸·Î ¹ÝȯÇÕ´Ï´Ù. À̺¥Æ® ¼Ò½º °´Ã¼´Â ¹Ù·Î À̺¥Æ®¸¦ ¹ß»ý½ÃŲ ÄÄÆ÷³ÍÆ®, Áï ¹öư ¡°b1¡±À» °¡¸£Å°´Â °ÍÀÔ´Ï´Ù.

 

n        if(ae.getSource() == b1)

 

ÅØ½ºÆ® Çʵ忡 ¹®ÀÚ¸¦ »ðÀÔÇϱâ À§Çؼ­ setText() ¸Þ¼­µå¸¦ »ç¿ëÇÕ´Ï´Ù. ÀÌ¹Ì ÅØ½ºÆ® Çʵå Àå¿¡¼­ ¹è¿ì°Ô µÉ °ÍÀÔ´Ï´Ù. getActionCommand() ¸Þ¼­µå´Â ¾×¼ÇÀÌ ¹ß»ýÇÑ °´Ã¼ÀÇ ·¹À̺íÀ» ¹ÝȯÇÕ´Ï´Ù. ±×·¡¼­ ÅØ½ºÆ® Çʵ忡 ¡°Enable¡±À̶ó°í »ðÀԵǴ °ÍÀÔ´Ï´Ù.

 

n        tf1.setText(ae.getActionCommand());

 

ÇÁ·¹ÀÓÀÌ ¶ã ¶§, ¹öưÀ» Ŭ¸¯ÇÒ ¼ö ¾øµµ·Ï ºñȰ¼ºÈ­·Î ÃʱâÈ­ÇÕ´Ï´Ù.

 

n        this.b2.setEnabled(false);

 

¿¹Á¦¿¡ µé¾î°£ ¸ðµç this´Â »èÁ¦Çصµ ½ÇÇà¿¡´Â ÀüÇô ¹®Á¦°¡ ¾ø½À´Ï´Ù. ÀÌ·¸°Ô ÇÏ´Â ÀÌÀ¯´Â ÁÁÀº ÄÚµù ½À°üÀ» µéÀ̱â À§Çؼ­ ÀÔ´Ï´Ù. Áö±ÝÀº °£´ÜÇÑ ¿¹Á¦À̱⠶§¹®¿¡ »ó°ü¾øÀ¸³ª, Äڵ尡 ±æ¾îÁö°í Á»´õ º¹ÀâÇØÁö¸é °´Ã¼°¡ ´©±¸ÀÇ ¼Ò¼ÓÀÎÁö ±¸º°ÇϱⰡ ¾î·Á¿öÁý´Ï´Ù. this¸¦ ÀûÀýÇÏ°Ô ºÙ¿© Áشٸé ÄÚµåºÐ¼®ÀÌ ÈξÀ ½¬¿öÁöÁö ¾ÊÀ»±î¿ä?

 

ActionEvent´Â °¢ ÄÄÆ÷³ÍÆ®¿¡ ƯÀ¯ÀÇ µ¿ÀÛÀÌ ¹ß»ýÇßÀ» °æ¿ì ¹ß»ýÇÏ´Â À̺¥Æ®·Î, ±× ¹ß»ýµÈ À̺¥Æ®ÀÇ ¸ðµç Á¤º¸¸¦ °¡Áö°í ÀÖ½À´Ï´Ù. ¹ß»ýÇÑ À̺¥Æ®¸¦ ó¸®ÇÏ´Â À̺¥Æ® ¸®½º³Ê´Â ActionListenerÀ̸ç, actionPerformed()¸Þ¼­µå¸¦ ÀçÁ¤ÀÇ ÇØ¼­ À̺¥Æ®¸¦ ó¸®ÇÏ¸é µÇ´Â °ÍÀÔ´Ï´Ù. ÀÌ·¯ÇÑ ÀÚ¹Ù À̺¥Æ® ó¸® ¸ðµ¨À» À§ÀÓÇü(delegation) À̺¥Æ® ó¸® ¸ðµ¨À̶ó°í ÇÕ´Ï´Ù. C++¿¡¼­ °¡Á®¿Â ±â¹ýÀ¸·Î, ÀÌ·¯ÇÑ ¸ðµ¨À» Ŭ·¡½º·Î ¸¸µé¾î »ç¿ëÇÏ´Â Á¤µµÀÇ ¼öÁØÀÌ µÈ´Ù¸é ´ç½ÅÀº ÀÚ¹ÙÀÇ °í¼ö Áß¿¡ °í¼ö °è¿­¿¡ µé¾î¼­°Ô µÇ´Â °ÍÀÔ´Ï´Ù.

 

ActionEventÀÇ ÁÖ¿ä ÇÊµå ¿ä¾à

static int ACTION_FIRST : ¾×¼Ç À̺¥Æ®¸¦ À§ÇØ »ç¿ëµÇ´Â idÀÇ ¹üÀ§¸¦ ³ªÅ¸³»´Â ù ¹øÂ° ¼ö

static int ACTION_LAST : ¾×¼Ç À̺¥Æ®¸¦ À§ÇØ »ç¿ëµÇ´Â idÀÇ ¹üÀ§¸¦ ³ªÅ¸³»´Â ¸¶Áö¸· ¼ö

static int ACTION_PERFORMED : ÀǹÌÀÖ´Â ¾×¼ÇÀÌ ¹ß»ýÇß´Ù´Â °ÍÀ» ³ªÅ¸³»´Â À̺¥Æ® id

 

ActionEventÀÇ ÁÖ¿ä »ý¼ºÀÚ ¸Þ¼­µå

ActionEvent(Object source, int id, String command, int modifiers)) : Á¤¼öÀÎ modifiers¸¦ keys·Î °¡Áö´Â ActionEvent °´Ã¼¸¦ »ý¼ºÇÕ´Ï´Ù. Á¤¼öÇüÀÇ id¸¦ ºÎ¿©ÇÒ ¼öµµ ÀÖ°í, command¿¡ ¹®ÀÚ¿­À» »ðÀÔÇÒ ¼öµµ ÀÖ½À´Ï´Ù.

 

AWTEvent Ŭ·¡½º°¡ Á¦°øÇØ ÁÖ´Â ±â´É

String getActionCommand() : ¾×¼Ç°ú °ü·ÃµÈ ¸í·É¾î ¹®ÀÚ¿­À» ¾ò½À´Ï´Ù.

int getModifiers() : ¾×¼ÇÀÌ ¹ß»ýÇÒ ¶§ ÇÔ²² ´­¸° modifier ۸¦ ¾ò½À´Ï´Ù.

String paramString() : ¾×¼Ç À̺¥Æ®¸¦ °¡¸®Å°´Â ¹®ÀÚ¿­·Î µÈ ÆÄ¶ó¹ÌÅ͸¦ ¾ò½À´Ï´Ù

 

 

13.8.2 Á¶Á¤ À̺¥Æ®(Adjustment Event)

 

Adjustment Event´Â ¸¶¿ì½º³ª Űº¸µåÀÇ PageUp, PageDown۸¦ »ç¿ëÇÏ¿© ÀÏ¹Ý ¹®¼­³ª À¥ ¹®¼­¿¡¼­ ÈçÈ÷ º¼ ¼ö ÀÖ´Â ½ºÅ©·Ñ¹Ù(Scrollbar)ÀÇ °ªÀ» º¯È­ ½Ãų ¶§ ¹ß»ýÇÏ´Â À̺¥Æ®¸¦ ¸»ÇÕ´Ï´Ù. Adjustment Event´Â Scrollbar¸¦ ¿òÁ÷¿´À» ¶§ ¹ß»ýÇÏ´Â À̺¥Æ®¸¦ °¨ÁöÇÏ´Â AdjustmentListenerÀÎÅÍÆäÀ̽º¿Í À̺¥Æ®¸¦ ó¸® ÇÏ´Â AdjustmentEventŬ·¡½º¿Í °ü·ÃÀÌ ÀÖ½À´Ï´Ù.

 

  ¾Æ·¡ÀÇ ¿¹Á¦´Â ¼öÆòÀ¸·Î µÇ¾îÀÖ´Â ½ºÅ©·Ñ¹Ù¸¦ ¿òÁ÷ÀÏ ¶§ ¸¶´Ù, ±× À§Ä¡ÀÇ º¯È­ °ªµéÀÌ µµ½ºÃ¢(¸í·É ÇÁ·ÒÇÁÆ®)¿¡ ÂïÈ÷´Â ÇÁ·Î±×·¥ÀÔ´Ï´Ù. ¿¹Á¦¸¦ Å×½ºÆ® ÇÑ ÈÄ ¼³¸í Çϵµ·Ï ÇϰڽÀ´Ï´Ù.

 

AdjustmentEvent ¿¹Á¦

import java.awt.*;

import java.awt.event.*;

class AdjustmentEventTest extends Frame implements AdjustmentListener{

   Scrollbar slider;

   public AdjustmentEventTest() {

      setLayout(new FlowLayout());

      slider = new Scrollbar(Scrollbar.HORIZONTAL, 0, 10, 0, 100);

      slider.setSize(100, 50);

      slider.addAdjustmentListener(this);

      add(slider);

   }

   public void adjustmentValueChanged(AdjustmentEvent e) {

          System.out.println(e.paramString()+", "+e.getAdjustmentType()+", "+e.getValue());

   }

   public static void main(String args[]) {

      AdjustmentEventTest f = new AdjustmentEventTest();

      f.setSize(200,50);

      f.setVisible(true);

      f.setTitle("AdjustmentEvent");

   }

}

C:\javaclass\classes>java AdjustmentEventTest

ADJUSTMENT_VALUE_CHANGED,adjType=UNIT_INCREMENT,value=1, 1, 1

ADJUSTMENT_VALUE_CHANGED,adjType=UNIT_INCREMENT,value=2, 1, 2

ADJUSTMENT_VALUE_CHANGED,adjType=UNIT_INCREMENT,value=3, 1, 3

ADJUSTMENT_VALUE_CHANGED,adjType=UNIT_DECREMENT,value=2, 2, 2

ADJUSTMENT_VALUE_CHANGED,adjType=UNIT_DECREMENT,value=1, 2, 1

 

 ÀÌ ¿¹Á¦¿¡¼­´Â ¸ÕÀú AdjustmentListener ÀÎÅÍÆäÀ̽º¸¦ implementsÇÏ¿©¾ß ÇÕ´Ï´Ù. ±× ÈÄ¿¡ ½ºÅ©·Ñ¹Ù¸¦ »ý¼ºÇÕ´Ï´Ù.

 

n         Scollbar slider = new Scrollbar(Scrollbar.HORIZONTAL, 0, 10, 0, 100);

 

 À§ ±¸ºÐ¿¡¼­ Scrollbar.HORIZONTAL´Â ½ºÅ©·Ñ¹Ù¸¦ ¼öÆòÀ¸·Î »ý¼ºÇ϶ó´Â °ÍÀÔ´Ï´Ù. ½ºÅ©·Ñ¹ÙÀÇ »ý¼ºÀÚ´Â 3 Á¾·ù°¡ ÀÖ½À´Ï´Ù. ¿©±â¿¡¼­ »ç¿ëµÈ »ý¼ºÀÚ´Â ¸Å°³º¯¼ö°¡ intÇü 5°³°¡ µé¾î°©´Ï´Ù. Áï, HORIZONTALÀº ¼öÆòÀ» ³ªÅ¸³»´Â intÇüÀÇ »ó¼ö¸¦ ¶æÇÕ´Ï´Ù. ¹Ý´ë·Î ¼öÁ÷À¸·Î »ý¼ºÇÏ·Á¸é Scrollbar.VERTICALÀ̶ó°í ½áÁÖ½Ã¸é µË´Ï´Ù. ±×·³, µÚ¿¡ ³ª¿À´Â ¼ýÀÚ 4°³¿¡ ´ëÇÏ¿© Àá±ñ ¾Ë¾Æ º¸°Ú½À´Ï´Ù. óÀ½ 0Àº ½ºÅ©·Ñ¹ÙÀÇ ½ÃÀÛ À§Ä¡ÀÔ´Ï´Ù. µÎ¹øÂ° 10Àº ½ºÅ©·Ñ¹Ù°¡ ¿òÁ÷ÀÏ ¶§ ºÎºÐÀ» Ç¥½ÃÇÏ´Â È­¸é À̵¿ ¸·´ë ´ÜÃßÀÇ Å©±âÀÔ´Ï´Ù. ¼¼¹øÂ° ¼ýÀÚ 0Àº ½ºÅ©·Ñ¹ÙÀÇ ÃÖÀú À§Ä¡°ªÀ̰í, ³×¹øÂ° ¼ýÀÚ 100Àº ½ºÅ©·Ñ¹ÙÀÇ ÃÖ°í À§Ä¡°ªÀÔ´Ï´Ù.

 ½ºÅ©·Ñ¹Ù¸¦ »ý¼ºÇÑ ÈÄ AdjustmentListener°¡ ½ºÅ©·Ñ¹Ù¸¦ °¨ÁöÇϵµ·Ï AdjustmentListener¸¦ ½ºÅ©·Ñ¹Ù¿¡ µî·ÏÇÕ´Ï´Ù.

 

n         slider.addAdjustmentListener(this);

 

±× ÈÄ¿¡ AdjustmentListenerÀÇ ¸Þ¼­µåÀÎ adjustmentValueChanged(AdjustmentEvent e)¸¦ ±¸ÇöÇØÁÝ´Ï´Ù.

 

n         public void adjustmentValueChanged(AdjustmentEvent e) {...}

 

ÀÌÁ¦ ¸¸µé¾îÁø ½ºÅ©·Ñ¹Ù¸¦ ÇÁ·¹ÀÓ¿¡ ºÎÂø½ÃŰ¸é µË´Ï´Ù.

 

n         add(slider);

 

 À§ÀÇ ¿¹Á¦ÀÇ À̺¥Æ® ¹ß»ý¿¡ ´ëÇÏ¿© ¾Ë¾Æº¸¸é ´ÙÀ½°ú °°½À´Ï´Ù. ¸ÕÀú ½ºÅ©·Ñ¹ÙÀÇ ¿òÁ÷ÀÓÀÌ ¹ß»ýÇÏ¸é ¸ÕÀú AdjustmentListenerÀÇ adjustmentValueChanged(AdjustmentEvent e) ¸Þ¼­µå°¡ È£ÃâµË´Ï´Ù. ÀÌ ¸Þ¼­µå ¾È¿¡¼­ AdjustmentEventÀÇ °´Ã¼ e °¡ »ý¼ºÀÌ µË´Ï´Ù. °´Ã¼¸¦ »ç¿ëÇÏ¿© AdjustmentEvent³»ÀÇ ¸Þ¼­µåµéÀ» È£ÃâÇϰí, Ãâ·ÂÇÕ´Ï´Ù.

 

n         e.paramString() : ¹ß»ýµÈ À̺¥Æ®ÀÇ »óŸ¦ Ç¥ÇöÇÑ ±ÛÀ» ¸®ÅÏ

n          e.getAdjustmentType() : °ª º¯°æ À̺¥Æ®¸¦ ¹ß»ý½ÃŲ Adjustment TypeÀ» ¸®ÅÏ

n         e.getValue() : Adjustment Event¿¡ ÀÖ´Â ÇöÀç °ªÀ» ¸®ÅÏ

 

 °á·ÐÀûÀ¸·Î Adjustment Event´Â Scrollbar¸¦ ¿òÁ÷¿´À» ¶§ ¹ß»ýÇÏ´Â À̺¥Æ®¸¦ °¨ÁöÇÏ´Â AdjustmentListener ÀÎÅÍÆäÀ̽º¿Í À̺¥Æ®¸¦ ó¸® ÇÏ´Â AdjustmentEvent Ŭ·¡½ºÀÇ °ü°è¸¦ ¸»ÇÏ´Â °ÍÀÔ´Ï´Ù. Adjustment Event ´Â Ç×»ó ½ºÅ©·Ñ¹Ù¿Í °°ÀÌ ´Ù´Ñ´Ù°í »ý°¢Çصµ ¹«¹æÇÕ´Ï´Ù. ½ºÅ©·Ñ¹Ù¸¦ »ç¿ëÇÏ¿© Á¦¾î¸¦ ÇØ¾ß ÇÏ´Â °æ¿ì´Â Ç×»ó AdjustmentEvent ¿Í AdjustmentListener¸¦ »ý°¢ÇÏ¼Å¾ß ÇÕ´Ï´Ù. AdjustmentEvent ÀÇ ÇÊµå °ªÀ» ¾Ë°í ÀÖÀ¸¸é ÆíÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖ´Â À̺¥Æ®ÀÔ´Ï´Ù.

 

AdjustmentEvent ÁÖ¿ä ¸â¹ö Çʵå

static int ADJUSTMENT_FIRST : Adjustment Event ID ¹üÀ§ÀÇ Ã¹¹øÂ° Á¤¼ö ID¸¦ Ç¥½Ã

static int ADJUSTMENT_LAST : Adjustment Event ID ¹üÀ§ÀÇ ¸¶Áö¸· Á¤¼ö ID¸¦ Ç¥½Ã

static int ADJUSTMENT__VALUE_CHANGED : Adjustment Event °ª º¯°æ À̺¥Æ®

static int BLOCK_DECREMENT : ¼öÆò ½ºÅ©·Ñ¹Ù ÄÄÆ÷³ÍÆ®ÀÇ ¹öºí ¿À¸¥ÂÊ Æ®·¢ ¶Ç´Â ¼öÁ÷ ½ºÅ©·Ñ¹Ù ÄÄÆ÷³ÍÆ®ÀÇ ¹öºí ¾Æ·¡ÂÊ Æ®·¢ ³»¿¡¼­ ¸¶¿ì½º·Î Ŭ·¢Ç߰ųª PGDN ۰¡ ´­·ÈÀ» ¶§ ¹ß»ý

static int BLOCK_INCREMENT : ¼öÆò ½ºÅ©·Ñ¹Ù ÄÄÆ÷³ÍÆ®ÀÇ ¹öºí ¿ÞÂÊ Æ®·¢ ¶Ç´Â ¼öÁ÷ ½ºÅ©·Ñ¹Ù ÄÄÆ÷³ÍÆ®ÀÇ ¹öºí À§ÂÊ Æ®·¢ ³»¿¡¼­ ¸¶¿ì½º·Î Ŭ¸¯Ç߰ųª Page UP ۰¡ ´­·ÈÀ» ¶§ ¹ß»ý

static int TRACK : ½ºÅ©·Ñ¹Ù ÄÄÆ÷³ÍÆ®ÀÇ ¹öºí(bubble)À» ¸¶¿ì½º·Î µå·¡±×ÇÒ ¶§ ¹ß»ý

static int UNIT_DECREMENT : ¼öÆò ½ºÅ©·Ñ¹Ù ÄÄÆ÷³ÍÆ®ÀÇ ¿À¸¥ÂÊ È­»ìÇ¥ ¹öư ¶Ç´Â ¼öÁ÷ ½ºÅ©·Ñ¹Ù ÄÄÆ÷³ÍÆ®ÀÇ ¾Æ·¡ È­»ìÇ¥ ¹öưÀ» ´­·¶À» °æ¿ì³ª ÇØ´ç ۰¡ ´­·ÈÀ» ¶§ ¹ß»ý

static int UNIT_INCREMENT : ¼öÆò ½ºÅ©·Ñ¹Ù ÄÄÆ÷³ÍÆ®ÀÇ ¿ÞÂÊ È­»ìÇ¥ ¹öư ¶Ç´Â ¼öÁ÷ ½ºÅ©·Ñ¹Ù ÄÄÆ÷³ÍÆ®ÀÇ À§ È­»ìÇ¥¹öưÀ» ´­·¶À» °æ¿ì ÇØ´ç ۰¡ ´­·ÈÀ» °æ¿ì ¹ß»ý

 

 

AdjustmentEvent ÁÖ¿ä ¸Þ¼­µå

public Adjustable getAdjustable() : À̺¥Æ® Ãâó°¡ µÇ´Â Adjustable °´Ã¼¸¦ ¸®ÅÏ

public int getAdjustmentType() : °ª º¯°æ À̺¥Æ®¸¦ ¹ß»ý½ÃŲ Adjustment typeÀ» ¸®ÅÏ

public int getValue() : Adjustment Event¿¡ ÀÖ´Â ÇöÀç °ªÀ» ¸®ÅÏ

public String paramString() : ¹ß»ýµÈ À̺¥Æ®ÀÇ »óŸ¦ Ç¥ÇöÇÑ ±ÛÀ» ¸®ÅÏ

 

 

13.8.3 ÄÄÆ÷³ÍÆ® À̺¥Æ®(Component Event)

 

ComponentEvent ÄÄÆ÷³ÍÆ®°¡ À̵¿µÇ¾ú°Å³ª, Å©±â°¡ º¯ÇÏ¿´°Å³ª, ¶Ç´Â º¸À̵µ·Ï, ¾Èº¸À̵µ·Ï ¼³Á¤µÉ ¶§ ¹ß»ýÇÏ´Â Àú¼öÁØ(low-level)ÀÇ À̺¥Æ® ÀÔ´Ï´Ù. ¶ÇÇÑ À̰ÍÀº ´Ù¸¥ ÄÄÆ÷³ÍÆ® °ü·Ã À̺¥Æ®ÀÇ »óÀ§ À̺¥Æ®·Î »ç¿ëµË´Ï´Ù. AWT³»¿¡¼­´Â ÄÄÆ÷³ÍÆ®ÀÇ Å©±âº¯°æ ¹× À̵¿¿¡ ´ëÇÏ¿© ³»ºÎÀûÀ¸·Î ÀÚµ¿ 󸮵DZ⠶§¹®¿¡ ÄÄÆ÷³ÍÆ® À̺¥Æ®´Â ´ÜÁö º¯°æ»çÇ×À» ¾Ë·ÁÁÖ±â À§ÇÑ ¸ñÀûÀ¸·Î »ç¿ëµË´Ï´Ù.

ÄÄÆ÷³ÍÆ® À̺¥Æ®¸¦ ó¸®ÇÏ·Á¸é ComponentListenerÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇϰųª Ãß»ó Ŭ·¡½ºÀÎ ComponentAdapterŬ·¡½ºÀÇ ¸Þ¼­µå¸¦ ÀçÁ¤ÀÇÇÏ¿© »ç¿ëÇÏ¿©¾ß ÇÕ´Ï´Ù. ÀÌ Å¬·¡½º°¡ °¡Áø ¸Þ¼­µå´Â ¸öüºÎºÐÀÌ ºñ¾îÀÖ´Â ¸Þ¼­µå·Î »ç¿ëÇÒ ¶§´Â Ŭ·¡½ºÀÇ ¸Þ¼­µå Áß  ÀÚ½ÅÀÌ Ã³¸®ÇϰíÀÚ ÇÏ´Â À̺¥Æ®¸¦ À§ÇÑ ¸Þ¼­µå¸¦ Àç Á¤ÀÇÇØ¼­ »ç¿ëÇÏ¸é µË´Ï´Ù.

 

   ´ÙÀ½ ¿¹Á¦´Â ÇÁ·¹ÀÓ À©µµ¿ì¸¦ »ý¼ºÇÑ ´ÙÀ½ ±× À©µµ¿ìÀÇ À§Ä¡¸¦ º¯È­½ÃŰ°Å³ª Å©±â¸¦ º¯°æÇϸ鼭 ÇÁ·¹ÀÓ ÄÄÆ÷³ÍÆ®¿¡ ³ªÅ¸³ª´Â À̺¥Æ®¿¡ µû¶ó¼­ ±× Å©±â, À§Ä¡ÀÇ º¯È­¸¦ º¸¿©ÁÖ´Â ÇÁ·Î±×·¥ÀÔ´Ï´Ù. ¡®´Ý±â¡¯¶ó´Â À̸§ÀÇ ¹öưÀ» Ãß°¡ÇÏ¿© ¾×¼Ç ¸®½º³Ê¸¦ ´Þ¾ÆÁÖ¾î  ¹öưÀ» ´©¸£¸é À©µµ¿ì°¡ »ç¶óÁö°Ô ÇÏ¿´½À´Ï´Ù.

 

ComponentEventTest

import java.awt.*;

import java.awt.event.*;

public class ComponentEventTest extends Frame {

   public ComponentEventTest() {

      super("ComponentEvent");

      ComponentListener cl = new ComponentAdapter() {

         public void componentHidden(ComponentEvent e) {

            System.out.println(e);

         }

         public void componentMoved(ComponentEvent e) {

            System.out.println(e);

         }

         public void componentResized(ComponentEvent e) {

            System.out.println(e);

         }

         public void componentShown(ComponentEvent e) {

            System.out.println(e);

         }

      };

      addComponentListener(cl);

      Button b = new Button("´Ý±â");

      add(b);

      b.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent e) {

           System.exit(0);

         }

      });

   }

   public static void main(String[] args) {

      ComponentEventTest f = new ComponentEventTest();

      f.setSize(200, 100);

      f.setVisible(true);

   }

}

D:\java\awt>java ComponentEventTest

java.awt.event.ComponentEvent[COMPONENT_RESIZED (0,0 200x100)] on frame0

java.awt.event.ComponentEvent[COMPONENT_SHOWN] on frame0

java.awt.event.ComponentEvent[COMPONENT_MOVED (0,2 200x100)] on frame0

java.awt.event.ComponentEvent[COMPONENT_MOVED (0,9 200x100)] on frame0

java.awt.event.ComponentEvent[COMPONENT_MOVED (2,14 200x100)] on frame0

java.awt.event.ComponentEvent[COMPONENT_MOVED (-4,-4 1160x844)] on frame0

java.awt.event.ComponentEvent[COMPONENT_RESIZED (-4,-4 1160x844)] on frame0

 

¿¹Á¦¸¦ ½ÇÇà½Ã۸é À§ ±×¸²°ú °°Àº ÇÁ·¹ÀÓ À©µµ¿ì°¡ ÁÂÃø »ó´Ü¿¡ ³ªÅ¸³³´Ï´Ù. ±×¸®°í µµ½ºÃ¢¿¡¼­´Â À­ºÎºÐÀÇ µÎ ÁÙ°ú °°ÀÌ ½ÇÇà½Ãų ¶§ÀÇ Á¤º¸°¡ ³ªÅ¸³³´Ï´Ù. óÀ½¿¡´Â xÁÂÇ¥ 0, yÁÂÇ¥ 0ÀÇ À§Ä¡¿¡ 200 X 100 ÀÇ Å©±â·Î À©µµ¿ì ÇÁ·¹ÀÓÀÌ ³ªÅ¸³­´Ù´Â ¶æÀ̱º¿ä. ±×¸®°í ÇÁ·¹ÀÓ À©µµ¿ì¸¦ À̵¿½ÃŰ°Å³ª Å©±â¸¦ ¹Ù²Ù¸é ¾Æ·¡ºÎºÐ°ú °°ÀÌ À̵¿ÇÏ´Â Á¤º¸¿Í Å©±â Á¤º¸°¡ ³ªÅ¸³³´Ï´Ù. ±×¸®°í ¡®´Ý±â¡¯¹öưÀ» ´©¸£¸é ÇÁ·¹ÀÓ À©µµ¿ì°¡ »ç¶óÁý´Ï´Ù.

 

´ÙÀ½ ºÎºÐÀÌ À§ ¿¹Á¦¿¡¼­ ¼³¸íÇÏ´Â ºÎºÐÀÇ ÇÙ½É ºÎºÐÀ̶ó ÇÒ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. ¼Ò½º¸¦ º¸½Ã¸é, ComponentListenerÀÎÅÍÆäÀ̽º¿¡¼­ ComponentAdapter Ŭ·¡½º¸¦ ¾÷ij½ºÆÃ(Upcasting)ÇÏ´Â °ÍÀ» ¾Ë ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. ComponentListenerÀÎÅÍÆäÀ̽º°¡ Á¤ÀÇÇÏ°í ¸Þ¼­µå¸¦ ComponentAdapter¸¦ »ç¿ëÇϰí ÀÖÀ¸¹Ç·Î ±×  ¸Þ¼­µå¸¦ »ç¿ëÇϱâ À§ÇÑ ¾÷ij½ºÆÃÀÌ °¡´ÉÇÑ °ÍÀÔ´Ï´Ù. ÀÌ·¸°Ô ÇÏ¿© À̺¥Æ® 󸮸¦ À§ÇÑ ¸Þ¼­µåµé Áï ¼û±â±â, À̵¿, Å©±âº¯µ¿, º¸À̱⿡ °üÇÑ ¸Þ¼­µåµéÀÌ ÀçÁ¤ÀÇ µÇ¾î °¢°¢ÀÇ À̺¥Æ®°¡ ¹ß»ýÇÒ ¶§ ¸¶´Ù ±× ³»¿ëÀ» Ãâ·ÂÇ϶ó°í µÇ¾î ÀÖ½À´Ï´Ù.

 

n         ComponentListener cl = new ComponentAdapter() {

 

public void componentHidden(ComponentEvent e) {

System.out.println(e);

}

public void componentMoved(ComponentEvent e) {

System.out.println(e);

}

public void componentResized(ComponentEvent e) {

System.out.println(e);

}

public void componentShown(ComponentEvent e) {

System.out.println(e);

}

    };

 

 

 

¡°´Ý±â¡±¶ó´Â À̸§ÀÇ ¹öư°´Ã¼ b¸¦ »ý¼ºÇÏ¿© Ãß°¡ÇÕ´Ï´Ù.

 

n         Button b = new Button("´Ý±â");

n         add(b);

 

 

¹öư °´Ã¼ b¿¡ ¾×¼Ç ¸®½º³Ê¸¦ ´Þ¾ÆÁÝ´Ï´Ù. ¸¶¿ì½º À̺¥Æ®°¡ ¹ß»ýÇÒ ¶§ ÇÁ·Î±×·¥À» Á¾·á½ÃŲ´Ù´Â °ÍÀ» ¾Ë ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù.

 

n        b.addActionListener(new ActionListener() {

n             public void actionPerformed(ActionEvent e) {

n               System.exit(0);

n        });

 

½ÇÇà ½Ã ComponentEventTestÀÇ °´Ã¼ f¸¦ »ý¼ºÇÏ¿© Å©±â¸¦ 200 X 100À¸·Î Á¤ÇØÁÖ°í È­¸é¿¡ ¶ç¿öÁÝ´Ï´Ù.

 

  n ComponentEventTest f = new ComponentEventTest();

  n f.setSize(200, 100);

  n f.setVisible(true);

 

   ÄÄÆ÷³ÍÆ®ÀÇ Å©±âº¯È­, À̵¿, º¸À̱⠵îÀÌ ¼³Á¤µÉ ¶§ ÄÄÆ÷³ÍÆ® À̺¥Æ®°¡ ¹ß»ýÇÕ´Ï´Ù. ÀÌ À̺¥Æ®´Â ÄÄÆ÷³ÍÆ®¿¡ µî·ÏµÈ ¸®½º³Ê¿¡°Ô Àü´ÞµÇ¾î 󸮵˴ϴÙ. ÄÄÆ÷³ÍÆ® ¸®½º³Ê´Â addComponentListener ¸Þ¼­µå¿¡ ÀÇÇØ µî·ÏÇÒ ¼ö ÀÖ½À´Ï´Ù. ÄÄÆ÷³ÍÆ® À̺¥Æ®´Â ÀÌ·¸°Ô ´Ù¸¥ À̺¥Æ®µé°ú ¸¶Âù°¡Áö·Î ListenerÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÏ°í ¸Þ¼­µå¸¦ ÀçÁ¤ÀÇÇÑ ´ÙÀ½, À̺¥Æ®°¡ ÀϾ´Â °÷¿¡ Listener¸¦ Ãß°¡ÇØ ÁÜÀ¸·Î½á ÄÄÆ÷³ÍÆ®µéÀÇ º¯È­¸¦ ½±°Ô °üÂûÇÒ ¼ö ÀÖ´Â °ÍÀÔ´Ï´Ù.

 

ComponentEvent & ComponentListener ÁÖ¿ä ¸Þ¼­µå

Component getComponent() À̺¥Æ®°¡ ¹ß»ýÇÑ ÄÄÆ÷³ÍÆ®¸¦ ¾ò½À´Ï´Ù.

String paramString() À̺¥Æ®¸¦ À¯ÀÏÇÏ°Ô ³ªÅ¸³»´Â ÆÄ¶ó¸ÞÅÍ ¹®ÀÚ¿­À» ¾ò½À´Ï´Ù

void componentHidden(ComponentEvent e) ÄÄÆ÷³ÍÆ®°¡ ¾Èº¸À̵µ·Ï ¼³Á¤µÉ ¶§ È£ÃâµË´Ï´Ù.

void componentMoved(ComponentEvent e) ÄÄÆ÷³ÍÆ®ÀÇ À§Ä¡°¡ º¯°æµÇ¾úÀ» ¶§ È£ÃâµË´Ï´Ù.

void componentResized(ComponentEvent e) ÄÄÆ÷³ÍÆ®ÀÇ Å©±â°¡ º¯°æµÇ¾úÀ» ¶§ È£ÃâµË´Ï´Ù.

void componentShown(ComponentEvent e) ÄÄÆ÷³ÍÆ®°¡ º¸À̵µ·Ï ¼³Á¤µÉ ¶§ È£ÃâµË´Ï´Ù.

 

 

13.8.4 ÄÁÅ×ÀÌ³Ê À̺¥Æ®(Container Event)

 

ÄÁÅ×À̳ÊÀ̺¥Æ®´Â µÎ°¡Áö ¹Û¿¡ ¾ø½À´Ï´Ù. Çϳª´Â ÄÁÅ×ÀÌ³Ê ÄÄÆ÷³ÍÆ®¿¡ ÄÄÆ÷³ÍÆ®¸¦ Ãß°¡ÇÒ ¶§ ¹ß»ýÇÏ´Â À̺¥Æ®¿Í ¹Ý´ë·Î ÄÄÆ÷³ÍÆ®¸¦ Á¦°ÅÇÒ ¶§ ¹ß»ýÇÏ´Â À̺¥Æ®, ÀÌ µÎ°¡Áö°¡ ÄÁÅ×À̳ÊÀ̺¥Æ®ÀÇ ÀüºÎÀÔ´Ï´Ù. ÄÁÅ×À̳ÊÀ̺¥Æ®°¡ ¹ß»ýÇϸé addContainerListener() ¸Þ¼­µå°¡ ±× À̺¥Æ®¸¦ ó¸®ÇÒ °´Ã¼¿¡°Ô ÄÁÅ×À̳ÊÀ̺¥Æ®°¡ ¹ß»ýÇß´Ù°í ¾Ë·ÁÁÝ´Ï´Ù. ÄÁÅ×À̳ÊÀ̺¥Æ® ¹ß»ý»ç½ÇÀ» Å뺸 ¹ÞÀº °´Ã¼´Â ÄÁÅ×À̳ÊÀ̺¥Æ®ÀÇ Á¾·ù¿¡ µû¶ó ´Ù¸¥ ¸Þ¼­µå¸¦ È£ÃâÇÏ°Ô µË´Ï´Ù.

 

¸¸ÀÏ ÄÄÆ÷³ÍÆ®¸¦ Ãß°¡ÇÒ ¶§ ¹ß»ýÇÏ´Â À̺¥Æ®¿´´Ù¸é componentAdded()¸Þ¼­µå¸¦ È£ÃâÇÏ¿© ÄÁÅ×À̳ÊÀ̺¥Æ®¸¦ ó¸®ÇÏ°í ¹Ý´ë·Î ÄÄÆ÷³ÍÆ®¸¦ Á¦°ÅÇÒ ¶§ ¹ß»ýÇÏ´Â À̺¥Æ®¿´´Ù¸é componentRemoved()¸Þ¼­µå¸¦ È£ÃâÇÏ¿© ÄÁÅ×À̳ÊÀ̺¥Æ®¸¦ ó¸®ÇÏ°Ô µË´Ï´Ù. ÄÁÅ×À̳ÊÀ̺¥Æ®´Â ContainerEventŬ·¡½º, ContainerAdapterŬ·¡½º, ContainerListenerÀÎÅÍÆäÀ̽º¿Í °ü·ÃÀÌ ÀÖ½À´Ï´Ù. ContainerEventŬ·¡½º¿¡´Â ÄÁÅ×À̳ÊÀ̺¥Æ®¸¦ °¨ÁöÇÏ´Â addContainerListener() ¸Þ¼­µå°¡ ÀÖ½À´Ï´Ù. ContainerListenerÀÎÅÍÆäÀ̽º´Â ÄÁÅ×ÀÌ³Ê À̺¥Æ®¸¦ ó¸®ÇÒ ¼ö ÀÖ´Â ±â´ÉÀ» Á¤ÀÇÇϰí ÀÖ´Â ÀÎÅÍÆäÀ̽º·Î¼­ ¾Æ±î ¼³¸íÇß´ø componentAdded()¸Þ¼­µå¿Í componentRemoved()¸Þ¼­µå°¡ ÀÖ½À´Ï´Ù. ContainerAdapter Ŭ·¡½º´Â ContainerListener ÀÎÅÍÆäÀ̽º·ÎºÎÅÍ ±¸ÇöµÈ Ãß»ó Ŭ·¡½ºÀÔ´Ï´Ù. µû¶ó¼­ À̺¥Æ®¸¦ ó¸®ÇÒ °´Ã¼¸¦ »ý¼ºÇϰíÀÚ ÇÑ´Ù¸é ContainerListener ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÏ´Â °´Ã¼¸¦ »ý¼ºÇϰųª ContainerAdapter Ŭ·¡½º¸¦ »ó¼ÓÇÑ °´Ã¼¸¦ »ý¼ºÇÏ¸é µË´Ï´Ù.

 

´ÙÀ½ ¿¹Á¦´Â remove¸¦ ´©¸£¸é Exit¹öư ÄÄÆ÷³ÍÆ®°¡ Á¦°ÅµÇ°í add¹öưÀ» ´©¸£¸é Exit¹öư ÄÄÆ÷³ÍÆ®°¡ »ý¼ºµÇ´Â ÄÁÅ×ÀÌ³Ê À̺¥Æ® ¿¹Á¦ÀÔ´Ï´Ù.

 

ScrollbarTestŬ·¡½º()  (ScrollbarÄÄÆ÷³ÍÆ®¿¡ °üÇÑ ¿¹Á¦)

import java.awt.*;

import java.awt.event.*;

public class ContainerEventTest extends Frame implements ActionListener{

   Button b1, b2, b3;

   public ContainerEventTest(){

      setLayout(new FlowLayout());

      b1=new Button("Add");

      b2=new Button("Remove");

      b3=new Button("Exit");  

      b1.addActionListener(this);

      b2.addActionListener(this);

      b3.addActionListener(new ActionListener(){

         public void actionPerformed(ActionEvent e){

            removeAll();

            System.exit(0);

         }

      });

addContainerListener(new ContainerAdapter(){

         public void componentAdded(ContainerEvent e){

            System.out.println(e);

         }

         public void componentRemoved(ContainerEvent e){

            System.out.println(e);

         }

      });

add(b1);

add(b2);

add(b3);

}

public void actionPerformed(ActionEvent e){

if(e.getSource()==b1){

if(b3.getParent()!=ContainerEventTest.this){

add(b3);

}

   }else if(e.getActionCommand().equals("Remove")){

if(b3.isVisible()){

       remove(b3);

        }

   } 

}

   public static void main(String[] args){

      ContainerEventTest f=new ContainerEventTest();

      f.pack();

      f.setVisible(true);

   }

}

C:\Java>javac ContainerEventTest.java

C:\Java>java ContainerEventTest

java.awt.event.ContainerEvent[COMPONENT_ADDED,child=button0] on frame0

java.awt.event.ContainerEvent[COMPONENT_ADDED,child=button1] on frame0

java.awt.event.ContainerEvent[COMPONENT_ADDED,child=button2] on frame0

java.awt.event.ContainerEvent[COMPONENT_REMOVED,child=button2] on frame0

java.awt.event.ContainerEvent[COMPONENT_ADDED,child=button2] on frame0

java.awt.event.ContainerEvent[COMPONENT_REMOVED,child=button2] on frame0

java.awt.event.ContainerEvent[COMPONENT_REMOVED,child=button1] on frame0

java.awt.event.ContainerEvent[COMPONENT_REMOVED,child=button0] on frame0

 

 

¹öưÀ» 3°³ ¸¸µé°í Add¹öư°ú Remove¹öư¿¡ ¾×¼Ç ¸®½º³Ê¸¦ »ý¼ºÇØÁÖ¾ú½À´Ï´Ù.

 

n        b1=new Button("Add");

n        b2=new Button("Remove");

n        b3=new Button("Exit");