À§ÁöÆ®(widget) ŸŶÀ» »ç¿ëÇÒ °æ¿ì Ç÷§Æû GUI À̺¥Æ®¸¦ ÀÐ°í µð½ºÆÐÄ¡ÇÏ´Â µ¥ »ç¿ëµÇ´Â ±âº» ½º·¹µå ¸ðµ¨À» ÀÌÇØÇØ°í ÀÖ¾î¾ß ÇÕ´Ï´Ù. UI ½º·¹µå¸¦ ±¸ÇöÇϸé Java ½º·¹µå¸¦ ÀÚ½ÅÀÇ Äڵ忡 »ç¿ëÇÒ ¶§ ÀÀ¿ëÇÁ·Î±×·¥¿¡¼ ÁؼöÇØ¾ßÇÒ ±ÔÄ¢¿¡ ¿µÇâÀ» ¹ÌĨ´Ï´Ù.
¸ðµç GUI ÀÀ¿ëÇÁ·Î±×·¥¿¡¼ ¾ð¾î³ª UI ŸŶ¿¡ »ó°ü ¾øÀÌ OS Ç÷§ÆûÀº GUI À̺¥Æ®¸¦ °Ë»öÇÏ¿© À̸¦ ÀÀ¿ëÇÁ·Î±×·¥ À̺¥Æ® ´ë±â¿¿¡ ¹èÄ¡ÇÕ´Ï´Ù. OS Ç÷§Æû¿¡ µû¶ó ±¸Á¶´Â ¾à°£ ´Ù¸£Áö¸¸ ±âº»Àº À¯»çÇÕ´Ï´Ù. »ç¿ëÀÚ°¡ ¸¶¿ì½º¸¦ Ŭ¸¯Çϰųª, ¹®ÀÚ¸¦ ÀÔ·ÂÇϰųª, âÀÇ Ç¥¸éÀ» ½ºÄ¥ °æ¿ì OS¿¡¼´Â ¸¶¿ì½º Ŭ¸¯, Ű ÀÔ·Â, â ÆäÀÎÆ® À̺¥Æ® °°Àº ÀÀ¿ëÇÁ·Î±×·¥ GUI À̺¥Æ®¸¦ »ý¼ºÇÕ´Ï´Ù. OS´Â À̺¥Æ®¸¦ ¹Þ´Â â°ú ÀÀ¿ëÇÁ·Î±×·¥À» °áÁ¤Çϰí À̸¦ ÀÀ¿ëÇÁ·Î±×·¥ÀÇ À̺¥Æ® ´ë±â¿¿¡ ¹èÄ¡ÇÕ´Ï´Ù.
âÀ¸·Î µÈ GUI ÀÀ¿ëÇÁ·Î±×·¥ÀÇ ±âº» ±¸Á¶´Â À̺¥Æ® ·çÇÁÀÔ´Ï´Ù. ÀÀ¿ëÇÁ·Î±×·¥À» ÃʱâÈÇÏ°í ´ë±â¿¿¡¼ GUI À̺¥Æ®¸¦ Àд ·çÇÁ¸¦ ½ÃÀÛÇÑ ´ÙÀ½ ÀûÀýÇÏ°Ô ÀÀ´äÇÕ´Ï´Ù. ÀÌ À̺¥Æ®¸¦ ó¸®ÇÏ´Â Áß¿¡ ¼öÇàÇÏ´Â ¸ðµç ÀÛ¾÷Àº GUI ½Ã½ºÅÛÀÌ »ç¿ëÀÚ¿¡°Ô ÀÀ´äÇÒ ¼ö ÀÖµµ·Ï ½Å¼ÓÇÏ°Ô ÀÌ·ç¾îÁ®¾ß ÇÕ´Ï´Ù.
UI À̺¥Æ®·Î Æ®¸®°ÅµÈ ½Ã°£ÀÌ ¿À·¡ °É¸®´Â ÀÛ¾÷Àº º°µµÀÇ ½º·¹µå¿¡¼ ¼öÇàÇØ¾ß ÇÕ´Ï´Ù. À̺¥Æ® ·çÇÁ ½º·¹µå°¡ »¡¸® µ¹¾Æ¿Í¼ ÀÀ¿ëÇÁ·Î±×·¥ ´ë±â¿ÀÇ ´ÙÀ½ À̺¥Æ®¸¦ ÆäÄ¡Çϵµ·Ï Çϱâ À§ÇÔÀÔ´Ï´Ù. ±×·¯³ª ´Ù¸¥ ½º·¹µå¿¡¼ À§ÁöÆ®(widget)¿Í Ç÷§Æû API¿¡ ¾×¼¼½ºÇÏ´Â °ÍÀº Àá±Ý°ú Á÷·ÄÈ·Î Á¦¾îÇØ¾ß ÇÕ´Ï´Ù. ÀÀ¿ëÇÁ·Î±×·¥¿¡¼ ±ÔÄ¢À» µû¸£Áö ¸øÇϸé OS È£ÃâÀÌ ½ÇÆÐÇϰųª Àüü GUI ½Ã½ºÅÛÀÌ Àá±æ ¼ö ÀÖ½À´Ï´Ù.
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 Äڵ带 È£ÃâÇÏ´Â ½ÇÇà ÇÁ·Î±×·¥À» Á¦°øÇØ¾ß ÇÕ´Ï´Ù. 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 ½º·¹µå¿¡¼ ´Ù¸¥ »çÇ×ÀÌ ¹ß»ýÇϹǷÎ, ½ÇÇà ÇÁ·Î±×·¥ ½ÇÇà ½Ã »ç¿ëÀÚ À§ÁöÆ®ÀÇ »óŸ¦
È®½ÅÇÒ ¼ö ¾ø½À´Ï´Ù.
SWT ÀÀ¿ëÇÁ·Î±×·¥À» ¿ÏÀüÇÏ°Ô ±¸ÇöÇÒ °æ¿ì ½º·¹µù ±ÔÄ¢Àº ¸Å¿ì ¸íÈ®ÇÕ´Ï´Ù. À̺¥Æ® ·çÇÁÀÇ »ý¼º°ú ÀÀ¿ëÇÁ·Î±×·¥¿¡¼ °è»ê ½º·¹µå¸¦ ºÐ±âÇϱâ À§ÇÑ °áÁ¤À» »ç¿ëÀÚ°¡ Á¦¾îÇϱ⠶§¹®ÀÔ´Ï´Ù.
Ç÷¯±×ÀÎ Äڵ带 Workbench¿¡ Á¦°øÇÒ ¶§ Á¶±Ý ´õ º¹ÀâÇØ Áö´Â »çÇ×ÀÌ ÀÖ½À´Ï´Ù. ¸±¸®½º »çÀÌ¿¡ ´ÙÀ½ ±ÔÄ¢¿¡ ´ëÇÑ ¿¹¿Ü´Â ÀÖÁö¸¸, Ç÷§Æû UI Ŭ·¡½º¸¦ »ç¿ëÇÒ ¶§ ´ÙÀ½ ±ÔÄ¢À» "½ÃÇà ±ÔÄ¢"À¸·Î °í·ÁÇÒ ¼ö ÀÖ½À´Ï´Ù.