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