½º·¹µù ¹®Á¦

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

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

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

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

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

SWT UI ½º·¹µå

SWT´Â Ç÷§Æû¿¡¼­ Á÷Á¢ Áö¿øÇÏ´Â ½º·¹µù ¸ðµ¨À» µû¸¨´Ï´Ù. ÀÀ¿ëÇÁ·Î±×·¥Àº ÀÚ½ÅÀÇ ±âº» ½º·¹µå¿¡¼­ À̺¥Æ® ·çÇÁ¸¦ ½ÇÇàÇϰí ÀÌ ½º·¹µå·ÎºÎÅÍ ¹Ù·Î À̺¥Æ®¸¦ µð½ºÆÐÄ¡ÇÕ´Ï´Ù. UI ½º·¹µå´Â Display°¡ ÀÛ¼ºµÈ ½º·¹µåÀÔ´Ï´Ù. ´Ù¸¥ ¸ðµç À§ÁöÆ®(widget)´Â UI ½º·¹µå¿¡¼­ ÀÛ¼ºÇØ¾ß ÇÕ´Ï´Ù.

ÀÀ¿ëÇÁ·Î±×·¥ÀÇ 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¿¡¼­´Â ¹é±×¶ó¿îµå ½º·¹µå¿¡¼­ À§ÁöÆ®(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.asyncExec (new Runnable () {
public void run() {
         if (!myWindow.isDisposed())
         myWindow.redraw();
      }
   });
// now do more computations
   ...

asyncExec¸¦ »ç¿ëÇÒ ¶§ ½ÇÇà ÇÁ·Î±×·¥ ³»¿¡¼­ »ç¿ëÀÚ À§ÁöÆ®(widget)°¡ 󸮵ǴÂÁö È®ÀÎÇÏ´Â °ÍÀº ÁÁÀº ¿¬½ÀÀÔ´Ï´Ù. asyncExec È£Ãâ°ú ½ÇÇà ÇÁ·Î±×·¥ÀÇ ½ÇÇà »çÀÌ¿¡ UI ½º·¹µå¿¡¼­ ´Ù¸¥ »çÇ×ÀÌ ¹ß»ýÇϹǷÎ, ½ÇÇà ÇÁ·Î±×·¥ ½ÇÇà ½Ã »ç¿ëÀÚ À§ÁöÆ®ÀÇ »óŸ¦ È®½ÅÇÒ ¼ö ¾ø½À´Ï´Ù.

Workbench ¹× ½º·¹µå

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

Ç÷¯±×ÀÎ Äڵ带 Workbench¿¡ Á¦°øÇÒ ¶§ Á¶±Ý ´õ º¹ÀâÇØ Áö´Â »çÇ×ÀÌ ÀÖ½À´Ï´Ù. ¸±¸®½º »çÀÌ¿¡ ´ÙÀ½ ±ÔÄ¢¿¡ ´ëÇÑ ¿¹¿Ü´Â ÀÖÁö¸¸, Ç÷§Æû UI Ŭ·¡½º¸¦ »ç¿ëÇÒ ¶§ ´ÙÀ½ ±ÔÄ¢À» "½ÃÇà ±ÔÄ¢"À¸·Î °í·ÁÇÒ ¼ö ÀÖ½À´Ï´Ù.