½º·¹µù ¹®Á¦

À§ÁöÆ®(widget) ŸŶÀ» »ç¿ëÇÒ °æ¿ì Ç÷§Æû GUI À̺¥Æ®¸¦ ÀÐ°í µð½ºÆÐÄ¡ÇÏ´Â µ¥ »ç¿ëµÇ´Â ±âº» ½º·¹µå ¸ðµ¨À» ÀÌÇØÇØ°í ÀÖ¾î¾ß ÇÕ´Ï´Ù. UI ½º·¹µå¸¦ ±¸ÇöÇϸé Java ½º·¹µå¸¦ ÀÚ½ÅÀÇ Äڵ忡 »ç¿ëÇÒ ¶§ ÀÀ¿ëÇÁ·Î±×·¥¿¡¼­ ÁؼöÇØ¾ßÇÒ ±ÔÄ¢¿¡ ¿µÇâÀ» ¹ÌĨ´Ï´Ù.

±âº» À̺¥Æ® µð½ºÆÐÄ¡

¸ðµç GUI ÀÀ¿ëÇÁ·Î±×·¥¿¡¼­ ¾ð¾î³ª UI ŸŶ¿¡ »ó°ü¾øÀÌ OS Ç÷§ÆûÀº GUI À̺¥Æ®¸¦ °Ë»öÇÏ¿© À̸¦ ÀÀ¿ëÇÁ·Î±×·¥ À̺¥Æ® ´ë±â¿­¿¡ ¹èÄ¡ÇÕ´Ï´Ù. OS Ç÷§Æû¿¡ µû¶ó ±¸Á¶´Â ¾à°£ ´Ù¸£Áö¸¸ ±âº»Àº À¯»çÇÕ´Ï´Ù. »ç¿ëÀÚ°¡ ¸¶¿ì½º¸¦ Ŭ¸¯Çϰųª, ¹®ÀÚ¸¦ ÀÔ·ÂÇϰųª, âÀÇ Ç¥¸éÀ» ½ºÄ¥ °æ¿ì OS¿¡¼­´Â ¸¶¿ì½º Ŭ¸¯, Ű ÀÔ·Â, â ÆäÀÎÆ® À̺¥Æ® °°Àº ÀÀ¿ëÇÁ·Î±×·¥ GUI À̺¥Æ®¸¦ »ý¼ºÇÕ´Ï´Ù. OS´Â À̺¥Æ®¸¦ ¹Þ´Â â°ú ÀÀ¿ëÇÁ·Î±×·¥À» °áÁ¤Çϰí À̸¦ ÀÀ¿ëÇÁ·Î±×·¥ÀÇ À̺¥Æ® ´ë±â¿­¿¡ ¹èÄ¡ÇÕ´Ï´Ù.

âÀ¸·Î µÈ GUI ÀÀ¿ëÇÁ·Î±×·¥ÀÇ ±âº» ±¸Á¶´Â À̺¥Æ® ·çÇÁÀÔ´Ï´Ù. ÀÀ¿ëÇÁ·Î±×·¥À» ÃʱâÈ­ÇÏ°í ´ë±â¿­¿¡¼­ GUI À̺¥Æ®¸¦ Àд ·çÇÁ¸¦ ½ÃÀÛÇÑ ´ÙÀ½ ÀûÀýÇÏ°Ô ÀÀ´äÇÕ´Ï´Ù. ÀÌ À̺¥Æ®¸¦ ó¸®ÇÏ´Â Áß¿¡ ¼öÇàÇÏ´Â ¸ðµç ÀÛ¾÷Àº GUI ½Ã½ºÅÛÀÌ »ç¿ëÀÚ¿¡°Ô ÀÀ´äÇÒ ¼ö ÀÖµµ·Ï ½Å¼ÓÇÏ°Ô ÀÌ·ç¾îÁ®¾ß ÇÕ´Ï´Ù.

UI À̺¥Æ®·Î Æ®¸®°ÅµÈ ½Ã°£ÀÌ ¿À·¡ °É¸®´Â ÀÛ¾÷Àº º°µµÀÇ ½º·¹µå¿¡¼­ ¼öÇàÇØ¾ß ÇÕ´Ï´Ù. À̺¥Æ® ·çÇÁ ½º·¹µå°¡ »¡¸® µ¹¾Æ¿Í¼­ ÀÀ¿ëÇÁ·Î±×·¥ ´ë±â¿­ÀÇ ´ÙÀ½ À̺¥Æ®¸¦ ÆäÄ¡Çϵµ·Ï Çϱâ À§ÇÔÀÔ´Ï´Ù. ±×·¯³ª ´Ù¸¥ ½º·¹µå¿¡¼­ À§ÁöÆ®(widget)¿Í Ç÷§Æû API¿¡ ¾×¼¼½ºÇÏ´Â °ÍÀº Àá±Ý°ú Á÷·ÄÈ­·Î Á¦¾îÇØ¾ß ÇÕ´Ï´Ù. ÀÀ¿ëÇÁ·Î±×·¥¿¡¼­ ±ÔÄ¢À» µû¸£Áö ¸øÇϸé OS È£ÃâÀÌ ½ÇÆÐÇϰųª Àüü GUI ½Ã½ºÅÛÀÌ Àá±æ ¼ö ÀÖ½À´Ï´Ù.

ŸŶ UI ½º·¹µå

C¸¦ »ç¿ëÇÏ´Â ±âº» GUI ÇÁ·Î±×·¡¸Ó´Â Ç÷§Æû À̺¥Æ® ·çÇÁ ÀÛ¾÷À» À§ÇÑ µðÀÚÀÎ °í·Á»çÇ×À» Àß ¾Ë°í ÀÖÀ» °ÍÀÔ´Ï´Ù. ±×·¯³ª JavaÀÇ ´õ ³ôÀº »óÀ§ ·¹º§ÀÇ À§ÁöÆ®(widget) ŸŶ¿¡¼­´Â Ç÷§Æû À̺¥Æ® ·çÇÁ¸¦ ¼û°Ü¼­ ÀÀ¿ëÇÁ·Î±×·¥ °³¹ßÀÚ¸¦ UI ½º·¹µù ¹®Á¦·ÎºÎÅÍ º¸È£ÇØÁÝ´Ï´Ù.

À̸¦ ¼öÇàÇϱâ À§ÇÑ ¹æ¹ýÀ¸·Î À̺¥Æ® ·çÇÁ¿¡¼­ ÀÐ°í µð½ºÆÐÄ¡ÇÏ¿© º°µµÀÇ ½º·¹µå¿¡¼­ ½ÇÇà ÁßÀÎ ÀÀ¿ëÇÁ·Î±×·¥¿¡¼­ Á¦°øÇÏ´Â ³»ºÎ ´ë±â¿­·Î À̺¥Æ®¸¦ °Ô½ÃÇϱâ À§ÇÑ Àü¿ë ŸŶ UI ½º·¹µå¸¦ ¼³Á¤ÇØ¾ß ÇÕ´Ï´Ù. ÀÌ·¸°Ô Çϸé À̺¥Æ®¸¦ ó¸®ÇÒ ¶§ ÀÀ¿ëÇÁ·Î±×·¥ÀÇ ½Ã°£¿¡ Á¦ÇÑÀ» µÎÁö ¾ÊÀ¸¸é¼­ ŸŶÀÌ ÃæºÐÇÑ ½Ã°£ µ¿¾È ¿î¿µ üÁ¦¿¡ ÀÀ´äÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÀ¿ëÇÁ·Î±×·¥¿¡¼­´Â ÀÚ½ÅÀÇ ÀÀ¿ëÇÁ·Î±×·¥ ½º·¹µå¿¡¼­ UI Äڵ忡 ¾×¼¼½ºÇϱâ À§ÇÑ Æ¯¼ö Àá±Ý ±â¼úÀ» »ç¿ëÇØ¾ß ÇÏÁö¸¸, ¸ðµç ÀÀ¿ëÇÁ·Î±×·¥ Äڵ尡 ºñUI ½º·¹µå¿¡¼­ ½ÇÇàµÇ°í Àֱ⠶§¹®¿¡ ÄÚµå Àüü¿¡¼­ ÀϰüµÇ°Ô ½ÇÇàµÇ°í ÀÖ½À´Ï´Ù.

ÀÌ´Â UI ½º·¹µù ¹®Á¦·ÎºÎÅÍ ÀÀ¿ëÇÁ·Î±×·¥À» "º¸È£"ÇÏ´Â°Í °°Áö¸¸ ½ÇÁ¦·Î´Â ¸¹Àº ¹®Á¦¸¦ ÀÏÀ¸Åµ´Ï´Ù.

GUI À̺¥Æ®°¡ Java ½º·¹µù ±¸Çö°ú ÀÀ¿ëÇÁ·Î±×·¥ ¼º´É¿¡ µû¶ó Á¿ìµÉ °æ¿ì ¹®Á¦¸¦ µð¹ö±×Çϰí Áø´ÜÇÏ´Â °ÍÀÌ ¾î·Á¿öÁý´Ï´Ù.

ÃÖ±Ù GUI Ç÷§Æû¿¡¼­´Â À̺¥Æ® ´ë±â¿­À» »ç¿ëÇÏ¿© ¿©·¯ °¡Áö ÃÖÀûÈ­ ÀÛ¾÷À» ¼öÇàÇÕ´Ï´Ù. ÀϹÝÀûÀÎ ÃÖÀûÈ­´Â ´ë±â¿­ÀÇ ¿©·¯ ÆäÀÎÆ® À̺¥Æ®¸¦ Ãà¼ÒÇÏ´Â °ÍÀÔ´Ï´Ù. âÀÇ ÀϺθ¦ ¸®ÆäÀÎÆ®ÇØ¾ß ÇÒ ¶§¸¶´Ù ¾ÆÁ÷ µð½ºÆÐÄ¡µÇÁö ¾ÊÀº Áߺ¹ ¶Ç´Â °ãħ À̺¥Æ®°¡ ÀÖ´ÂÁö ´ë±â¿­À» È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ À̺¥Æ®¸¦ ÇϳªÀÇ ÆäÀÎÆ® À̺¥Æ®·Î º´ÇÕÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯¸é ÀÀ¿ëÇÁ·Î±×·¥ÀÇ ÆäÀÎÆ® ÄÚµå ½ÇÇà Ƚ¼ö ¶Ç´Â ±ôºýÀÓ È½¼ö°¡ ÁÙ¾îµì´Ï´Ù. À§ÁöÆ®(widget) ŸŶÀÌ ´ë±â¿­¿¡¼­ À̺¥Æ®¸¦ »¡¸® °¡Á®¿Í¼­ ³»ºÎ ´ë±â¿­¿¡ °Ô½ÃÇÒ °æ¿ì ÀÌ ÃÖÀûÈ­°¡ ½ÇÆÐÇÏ°Ô µË´Ï´Ù.

°³¹ßÀÚÀÇ ½º·¹µù ¸ðµ¨¿¡ ´ëÇÑ ÀνÄÀ» ¹Ù²Ù¸é ´Ù¸¥ ¾ð¾î¿Í ŸŶÀ¸·Î ±âº» GUI ½Ã½ºÅÛÀ» ÇÁ·Î±×·¡¹ÖÇÑ °æÇèÀÌ ÀÖ´Â ÇÁ·Î±×·¡¸Ó¿¡°Ô´Â È¥¶õ½º·¯¿ï °ÍÀÔ´Ï´Ù.

SWT UI ½º·¹µå

SWT´Â Ç÷§Æû¿¡¼­ Á÷Á¢ Áö¿øÇÏ´Â ½º·¹µù ¸ðµ¨À» µû¸¨´Ï´Ù. ÀÀ¿ëÇÁ·Î±×·¥Àº ÀÚ½ÅÀÇ ±âº» ½º·¹µå¿¡¼­ À̺¥Æ® ·çÇÁ¸¦ ½ÇÇàÇϰí ÀÌ ½º·¹µå·ÎºÎÅÍ ¹Ù·Î À̺¥Æ®¸¦ µð½ºÆÐÄ¡ÇÕ´Ï´Ù. À̰ÍÀ» ÀÀ¿ëÇÁ·Î±×·¥ÀÇ "UI ½º·¹µå"¶ó°í ÇÕ´Ï´Ù.

Âü°í: ±â¼úÀûÀ¸·Î UI ½º·¹µå´Â µð½ºÇ÷¹À̸¦ ¸¸µå´Â ½º·¹µåÀÔ´Ï´Ù. ½ÇÁ¦·Î À̺¥Æ® ·çÇÁ¸¦ ½ÇÇàÇϰí À§ÁöÆ®(widget)¸¦ ¸¸µå´Â ½º·¹µåÀ̱⵵ ÇÕ´Ï´Ù.

ÀÀ¿ëÇÁ·Î±×·¥ÀÇ UI ½º·¹µå¿¡¼­ ¸ðµç À̺¥Æ® Äڵ尡 Æ®¸®°ÅµÇ±â ¶§¹®¿¡ À̺¥Æ®¸¦ ó¸®ÇÏ´Â ÀÀ¿ëÇÁ·Î±×·¥ Äڵ忡¼­´Â ÀÚÀ¯·Ó°Ô À§ÁöÆ®(widget)¿¡ ¾×¼¼½ºÇÏ°í Æ¯º°ÇÑ ±â¼úÀ» »ç¿ëÇÏÁö ¾Ê°í ±×·¡ÇÈÀ» È£ÃâÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª ÀÀ¿ëÇÁ·Î±×·¥Àº À̺¥Æ®¿¡ ÀÀ´äÇÏ¿© ½Ã°£ÀÌ ¿À·¡ °É¸®´Â ÀÛ¾÷À» ¼öÇàÇÒ °æ¿ì °è»ê ½º·¹µå¸¦ ºÐ±âÇØ¾ß ÇÕ´Ï´Ù.

Âü°í: SWT´Â UI ½º·¹µå·ÎºÎÅÍ ¸¸µé¾îÁö´Â ºñUI ½º·¹µåÀÇ È£Ãâ¿¡ ´ëÇØ SWTExceptionÀ» Æ®¸®°ÅÇÕ´Ï´Ù.

SWT ÀÀ¿ëÇÁ·Î±×·¥¿¡ ´ëÇÑ À̺¥Æ® ·çÇÁ¸¦ Æ÷ÇÔÇÑ ±âº» ½º·¹µå´Â ´ÙÀ½°ú °°½À´Ï´Ù.

   public static void main (String [] args) {
      Display display = new Display ();
      Shell shell = new Shell (display);
      shell.open ();
      // start the event loop. We stop when the user has done
      // something to dispose our window.
      while (!shell.isDisposed ()) {
         if (!display.readAndDispatch())
            display.sleep();
      }
      display.dispose ();
   }

À§ÁöÆ®(widget)°¡ ¸¸µé¾îÁö°í ½©ÀÌ ¿­¸®¸é ÀÀ¿ëÇÁ·Î±×·¥Àº ½© âÀÌ »èÁ¦µÉ ¶§±îÁö OS ´ë±â¿­¿¡¼­ À̺¥Æ®¸¦ ÀÐ¾î µð½ºÆÐÄ¡ÇÕ´Ï´Ù. ´ë±â¿­¿¡ »ç¿ëÇÒ ¼ö ÀÖ´Â À̺¥Æ®°¡ ¾øÀ¸¸é ´Ù¸¥ ÀÀ¿ëÇÁ·Î±×·¥ÀÌ ½ÇÇàµÉ ¼ö ÀÖµµ·Ï µð½ºÇ÷¹À̰¡ ÀϽà Á¤ÁöÇϵµ·Ï ¸í·ÉÇÕ´Ï´Ù.

Âü°í: SWT ÀÀ¿ëÇÁ·Î±×·¥ÀÇ °¡Àå ÀϹÝÀûÀÎ ½º·¹µù ¸ðµ¨Àº ´ÜÀÏ UI ½º·¹µå¸¦ ½ÇÇàÇÏ°í °è»ê ½º·¹µå¿¡¼­ ½Ã°£ÀÌ ¿À·¡ °É¸®´Â ÀÛ¾÷À» ¼öÇàÇÏ´Â °ÍÀÔ´Ï´Ù. ±×·¯³ª SWT´Â °³¹ßÀÚ¸¦ ÀÌ ¸ðµ¨·Î Á¦ÇÑÇÏÁö´Â ¾Ê½À´Ï´Ù. ÀÀ¿ëÇÁ·Î±×·¥Àº °¢ ½º·¹µå¿¡ ÀÖ´Â º°µµÀÇ À̺¥Æ® ·çÇÁ¸¦ »ç¿ëÇÏ¿© ´ÙÁß UI ½º·¹µå¸¦ ½ÇÇàÇÒ ¼ö ÀÖ½À´Ï´Ù.

SWT¿¡¼­´Â ¹è°æ ½º·¹µå¿¡¼­ À§ÁöÆ®(widget)¿Í ±×·¡ÇÈ Äڵ带 È£ÃâÇϱâ À§ÇØ Æ¯º°ÇÑ ¾×¼¼½º ¹æ¹ýÀ» Á¦°øÇÕ´Ï´Ù.

ºñUI ½º·¹µå¿¡¼­ ÄÚµå ½ÇÇà

ºñUI ½º·¹µå¿¡¼­ UI Äڵ带 È£ÃâÇÏ·Á´Â ÀÀ¿ëÇÁ·Î±×·¥Àº UI Äڵ带 È£ÃâÇÏ´Â ½ÇÇà ÇÁ·Î±×·¥À» Á¦°øÇØ¾ß ÇÕ´Ï´Ù. Display Ŭ·¡½ºÀÇ syncExec(Runnable) ¹× asyncExec(Runnable) ¸Þ¼Òµå¸¦ »ç¿ëÇÏ¿© ÀûÀýÇÑ ½Ã±â¿¡ UI ½º·¹µå¿¡¼­ ÀÌ ½ÇÇà ÇÁ·Î±×·¥À» ½ÇÇàÇÕ´Ï´Ù.

´ÙÀ½ ÄÚµå ½º´ÏÆê¿¡¼­´Â ÀÌ ¸Þ¼Òµå¸¦ »ç¿ëÇϱâ À§ÇÑ ÆÐÅÏÀ» ¼³¸íÇÕ´Ï´Ù.

   // do time-intensive computations
   ...
   // now update the UI. We don't depend on the result,
// so use async.
   Display.getDefault ().asyncExec (new Runnable () {
public void run() {
         myWindow.redraw();
      }
   });
// now do more computations
   ...

Workbench ¹× ½º·¹µå

SWT ÀÀ¿ëÇÁ·Î±×·¥À» ¿ÏÀüÇÏ°Ô ±¸ÇöÇÒ °æ¿ì ½º·¹µù ±ÔÄ¢Àº ¸Å¿ì ¸íÈ®ÇÕ´Ï´Ù. À̺¥Æ® ·çÇÁÀÇ »ý¼º°ú ÀÀ¿ëÇÁ·Î±×·¥¿¡¼­ °è»ê ½º·¹µå¸¦ ºÐ±âÇϱâ À§ÇÑ °áÁ¤À» »ç¿ëÀÚ°¡ Á¦¾îÇϱ⠶§¹®ÀÔ´Ï´Ù.

Ç÷¯±×ÀÎ Äڵ带 Workbench·Î Á¦°øÇÏ´Â °æ¿ì JFace ¶Ç´Â Workbench Äڵ忡 ¼û°ÜÁø ½º·¹µù "¸ÅÁ÷"Àº ¾ø½À´Ï´Ù. ±ÔÄ¢Àº ¸íÈ®ÇÕ´Ï´Ù.

Copyright IBM Corporation and others 2000, 2003.