SWT¿¡´Â ¿©·¯ °¡Áö ±â´ÉµéÀÌ Æ÷ÇԵǾî ÀÖÁö¸¸ ½Ã½ºÅÛÀÇ ÄÚ¾î ±â´ÉÀÎ À§ÁöÆ®(widget), ·¹À̾ƿô ¹× À̺¥Æ®¸¸ ¾Ë°í À־ À¯¿ëÇÏ°í °·ÂÇÑ ÀÀ¿ëÇÁ·Î±×·¥À» ±¸ÇöÇÒ ¼ö ÀÖ½À´Ï´Ù.
Ç÷§Æû Workbench È®ÀåÀ» »ç¿ëÇÏ¿© UI ¿ä¼Ò¸¦ Á¦°øÇÒ °æ¿ì Workbench¿¡¼ SWT ½ÃÀÛ ¸ÞÄ¿´ÏÁòÀ» ´ë½Å ó¸®ÇÕ´Ï´Ù.
Workbench ¿ÜºÎ¿¡¼ óÀ½ºÎÅÍ SWT ÀÀ¿ëÇÁ·Î±×·¥À» ÀÛ¼ºÇÒ °æ¿ì SWTÀÇ ÀÀ¿ëÇÁ·Î±×·¥ ±¸Á¶¸¦ ´õ Àß ¾Ë°í ÀÖ¾î¾ß ÇÕ´Ï´Ù.
ÀϹÝÀûÀÎ µ¶¸³Çü SWT ÀÀ¿ëÇÁ·Î±×·¥ÀÇ ±¸Á¶´Â ´ÙÀ½°ú °°½À´Ï´Ù.
´ÙÀ½ ÄÚµå ½º´ÏÆêÀº org.eclipse.swt.examples.helloworld.HelloWorld2 ÀÀ¿ëÇÁ·Î±×·¥¿¡¼ °³ÀÛÇÑ °ÍÀÔ´Ï´Ù. ÀÀ¿ëÇÁ·Î±×·¥¿¡¼ "Hello World"¶ó´Â ¹®ÀÚ¿¸¸ Ç¥½ÃÇϱ⠶§¹®¿¡ ´Ù¸¥ À§ÁöÆ®(widget) À̺¥Æ®¿¡ µî·ÏÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù.
public static void main (String [] args) { Display display = new Display (); Shell shell = new Shell (display); Label label = new Label (shell, SWT.CENTER); label.setText ("Hello_world"); label.setBounds (shell.getClientArea ()); shell.open (); while (!shell.isDisposed ()) { if (!display.readAndDispatch ()) display.sleep (); } display.dispose (); }
µð½ºÇ÷¹ÀÌ´Â SWT¿Í ±âº» Ç÷§ÆûÀÇ GUI ½Ã½ºÅÛ °£ ¿¬°áÀ» ³ªÅ¸³À´Ï´Ù. Ç¥½Ã´Â ÁÖ·Î Ç÷§Æû À̺¥Æ® ·çÇÁ¸¦ °ü¸®Çϰí UI ½º·¹µå¿Í ´Ù¸¥ ½º·¹µå °£ÀÇ Åë½ÅÀ» Á¦¾îÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù. UI ½º·¹µù ¹®Á¦¿¡ ´ëÇÑ Àüü ¼³¸íÀº Ŭ¶óÀ̾ðÆ®ÀÇ ½º·¹µù ¹®Á¦¸¦ ÂüÁ¶ÇϽʽÿÀ.
´ëºÎºÐÀÇ ÀÀ¿ëÇÁ·Î±×·¥ÀÇ °æ¿ì À§¿¡¼ »ç¿ëÇÑ ÆÐÅÏÀ» µû¸¦ ¼ö ÀÖ½À´Ï´Ù. ´Ù¸¥ âÀ» ¸¸µé±â Àü¿¡ Ç¥½Ã¸¦ ÀÛ¼ºÇØ¾ß ÇÏ°í ½©À» ´ÝÀ» ¶§´Â Ç¥½Ã¸¦ »èÁ¦ÇØ¾ß ÇÕ´Ï´Ù. ´ÙÁß ½º·¹µå ÀÀ¿ëÇÁ·Î±×·¥À» ¼³°èÇÏ´Â °æ¿ì¸¦ Á¦¿ÜÇϸé Ç¥½Ã¿¡ ´ëÇØ ´õ ¸¹ÀÌ »ý°¢ÇÒ Çʿ䰡 ¾ø½À´Ï´Ù.
½©Àº OS Ç÷§Æû â °ü¸®ÀÚ°¡ °ü¸®ÇÏ´Â "â"ÀÔ´Ï´Ù. ¸Ç À§ ·¹º§ÀÇ ½©Àº Ç¥½ÃÀÇ ÇÏÀ§·Î ÀÛ¼ºµÇ´Â ½©ÀÔ´Ï´Ù. ÀÌ Ã¢Àº »ç¿ëÀÚ°¡ ÀÀ¿ëÇÁ·Î±×·¥À» »ç¿ëÇÏ¸é¼ À̵¿, Å©±â Á¶Á¤, ÃÖ¼ÒÈ, ÃÖ´ëÈÇϴ âÀÔ´Ï´Ù. º¸Á¶ ½©Àº ´Ù¸¥ ½©ÀÇ ÇÏÀ§·Î ¸¸µé¾îÁø ½©ÀÔ´Ï´Ù. ÀÌ Ã¢Àº ´ë°³ ´ëÈ »óÀÚ Ã¢À̳ª ´Ù¸¥ âÀÇ ÄÁÅØ½ºÆ®¿¡¼¸¸ Á¸ÀçÇÏ´Â Àӽà âÀ¸·Î »ç¿ëµË´Ï´Ù.
¸Ç À§ ·¹º§ÀÇ ½©ÀÎ °æ¿ì¸¦ Á¦¿ÜÇÏ¸é ¸ðµç À§ÁöÆ®(widget)¿¡´Â »óÀ§°¡ ÀÖ½À´Ï´Ù. ¸Ç À§ ·¹º§ÀÇ ½©¿¡´Â »óÀ§°¡ ¾øÁö¸¸, ¸ðµå ƯÁ¤ Ç¥½Ã¿Í °ü·ÃÇÏ¿© ÀÛ¼ºµË´Ï´Ù. getDisplay()¸¦ »ç¿ëÇÏ¿© ÀÌ Ç¥½Ã¿¡ ¾×¼¼½ºÇÒ ¼ö ÀÖ½À´Ï´Ù. ´Ù¸¥ ¸ðµç À§ÁöÆ®(widget)´Â ¸Ç À§ ·¹º§ ½©ÀÇ (Á÷Á¢ ¶Ç´Â °£Á¢) ÇÏÀ§ Ç׸ñÀ¸·Î ¸¸µé¾î Áý´Ï´Ù. ´Ù¸¥ ¸ðµç À§ÁöÆ®(widget)´Â ¸Ç À§ ·¹º§ ½©ÀÇ (Á÷Á¢ ¶Ç´Â °£Á¢) ÇÏÀ§ Ç׸ñÀ¸·Î ¸¸µé¾î Áý´Ï´Ù.
Composite À§ÁöÆ®(widget)´Â ÇÏÀ§¸¦ °¡Áú
ÀÀ¿ëÇÁ·Î±×·¥ âÀÌ Ç¥½ÃµÇ¸é À̸¦ À§ÁöÆ®(widget) Æ®¸®³ª ·çÆ®°¡ ½©ÀÎ °èÃþ ±¸Á¶·Î »ý°¢ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÀ¿ëÇÁ·Î±×·¥ÀÇ º¹Àâµµ¿¡ µû¶ó ½©ÀÇ ´ÜÀÏ ÇÏÀ§, ¿©·¯ ÇÏÀ§ ¶Ç´Â ÇÏÀ§¸¦ °¡Áø ÁßøµÈ °èÃþÀÇ º¹ÇÕÀÌ ÀÖÀ» ¼ö ÀÖ½À´Ï´Ù.
ÀÀ¿ëÇÁ·Î±×·¥¿¡¼ À§ÁöÆ®(widget)¸¦ ¸¸µé¸é SWT´Â ¹Ù·Î ±âº» Ç÷§Æû À§ÁöÆ®(widget)¸¦ ¸¸µì´Ï´Ù. ±×·¯¸é ±âº» OS À§ÁöÆ®(widget)°¡ ÀÖ´ÂÁö ¿©ºÎ¿¡ µû¶ó ´Ù¸£°Ô ÀÛµ¿ÇÏ´Â Äڵ尡 ÇÊ¿äÇÏÁö ¾Ê½À´Ï´Ù. ¶ÇÇÑ ´ëºÎºÐÀÇ À§ÁöÆ®(widget) µ¥ÀÌÅ͸¦ ŸŶ¿¡ º¹Á¦Çϱ⠺¸´Ù´Â Ç÷§Æû °èÃþ¿¡ º¸°üÇÒ ¼öµµ ÀÖ½À´Ï´Ù. À̰ÍÀº ŸŶÀÇ À§ÁöÆ®(widget) ¶óÀÌÇÁ »çÀÌŬ °³³äÀÌ ±âº» GUI ½Ã½ºÅÛÀÇ ±ÔÄ¢À» ÁؼöÇØ¾ß ÇÔÀ» ÀǹÌÇÕ´Ï´Ù.
´ëºÎºÐÀÇ GUI Ç÷§Æû¿¡¼´Â À§ÁöÆ®(widget)¸¦ ÀÛ¼ºÇÒ ¶§ »óÀ§¸¦ ÁöÁ¤ÇØ¾ß ÇÕ´Ï´Ù. ŸŶ À§ÁöÆ®(widget)¸¦ ÀÛ¼ºÇÏ°í ³ª¸é ¹Ù·Î SWT¿¡¼ Ç÷§Æû À§ÁöÆ®(widget)¸¦ ¸¸µé±â ¶§¹®¿¡ À§ÁöÆ®(widget)ÀÇ »ý¼ºÀÚ¿¡¼ »óÀ§ À§ÁöÆ®(widget)¸¦ ÁöÁ¤ÇØ¾ß ÇÕ´Ï´Ù.
À§ÁöÆ®(widget)¸¦ ¸¸µé ¶§ OS¿¡¼ ÀϺΠÀ§ÁöÆ®(widget) Ư¼ºÀ» ¼³Á¤ÇØ¾ß ÇÏ¸ç ±× ÈÄ¿¡´Â ÀÌ Æ¯¼ºÀ» º¯°æÇÒ ¼ö ¾ø½À´Ï´Ù. ¿¹¸¦ µé¾î, ¸ñ·Ï¿¡ ¼±ÅûçÇ×ÀÌ ÇÑ °³ ¶Ç´Â ¿©·¯ °³ ÀÖÀ» ¼ö ÀÖ°í, ȸéÀ̵¿ ¸·´ë°¡ Àְųª ¾øÀ» ¼ö ÀÖ½À´Ï´Ù.
½ºÅ¸ÀÏÀ̶ó°í ÇÏ´Â ÀÌ·¯ÇÑ Æ¯¼ºÀº »ý¼ºÀÚ¿¡¼ ¼³Á¤µÇ¾î¾ß ÇÕ´Ï´Ù. ¸ðµç À§ÁöÆ®(widget) »ý¼ºÀÚ´Â ¿øÇÏ´Â ¸ðµç ½ºÅ¸ÀÏÀÇ ºñÆ® °ü·Ã OR¸¦ ÁöÁ¤ÇÏ´Â int Àμö¸¦ ÇÊ¿ä·Î ÇÕ´Ï´Ù. ƯÁ¤ ½ºÅ¸ÀÏÀ» ÈùÆ®·Î °£ÁÖÇÏ´Â °æ¿ìµµ ÀÖ½À´Ï´Ù. ÀÌ´Â ¸ðµç Ç÷§Æû¿¡¼ »ç¿ëÇÒ ¼ö ¾øÁö¸¸ Áö¿øÇÏÁö ¾Ê´Â Ç÷§Æû¿¡¼´Â ¹«½ÃÇÏ°Ô µÊÀ» ÀǹÌÇÕ´Ï´Ù.
½ºÅ¸ÀÏ »ó¼ö´Â SWT Ŭ·¡½º¿¡ °ø¿ë Á¤Àû Çʵå·Î Á¸ÀçÇÕ´Ï´Ù. ¸ðµç À§ÁöÆ®(widget) Ŭ·¡½ºÀÇ Àû¿ë °¡´ÉÇÑ »ó¼ö ¸ñ·ÏÀº SWTÀÇ API ÂüÁ¶¼¿¡ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù.
SWT ¹Ø¿¡ ÀÖ´Â OS Ç÷§Æû¿¡¼´Â OS ÀÚ¿øÀ» ¸í½ÃÀûÀ¸·Î ÇÒ´ç ¹× »èÁ¦ÇØ¾ß ÇÕ´Ï´Ù. Ç÷§Æû ÀÀ¿ëÇÁ·Î±×·¥ ±¸Á¶¸¦ À§ÁöÆ®(widget) ŸŶ¿¡ ¹Ý¿µÇÑ´Ù´Â SWT ¼³°è öÇп¡ µû¶ó SWT¿¡¼´Â ÇÒ´çÇÑ OS ÀÚ¿øÀ» ¸í½ÃÀûÀ¸·Î »èÁ¦ÇÒ °ÍÀ» ¿ä±¸ÇÕ´Ï´Ù. SWT¿¡¼´Â, Widget.dispose() ¸Þ¼Òµå¸¦ »ç¿ëÇÏ¿© ƯÁ¤ ŸŶ ¿ÀºêÁ§Æ®¿Í ¿¬°üµÈ ÀÚ¿øÀ» »èÁ¦ÇÕ´Ï´Ù.
±âº» ±ÔÄ¢Àº ¿ÀºêÁ§Æ®¸¦ ¸¸µé °æ¿ì À̸¦ »èÁ¦ÇØ¾ß ÇÑ´Ù´Â °ÍÀÔ´Ï´Ù. ÀÌ °³³äÀ» ´õ ÀÚ¼¼È÷ ¼³¸íÇϴ ƯÁ¤ÇÑ ±âº» ±ÔÄ¢Àº ´ÙÀ½°ú °°½À´Ï´Ù.
ÀÌ ±ÔÄ¢¿¡ ÇϳªÀÇ ¿¹¿Ü°¡ Àִµ¥, Rectangle ¹× Point¿Í °°Àº ´Ü¼øÇÑ µ¥ÀÌÅÍ ¿ÀºêÁ§Æ®¿¡¼´Â ¿î¿µ üÁ¦ ÀÚ¿øÀ» »ç¿ëÇÏÁö ¾Ê´Â´Ù´Â °ÍÀÔ´Ï´Ù. À̵éÀº dispose() ¸Þ¼Òµå¸¦ °®Áö ¾ÊÀ¸¹Ç·Î À̵éÀ» »èÁ¦ÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù. Àǽɽº·¯¿ï °æ¿ì ƯÁ¤ Ŭ·¡½º¿¡ ´ëÇÑ javadocÀ» È®ÀÎÇϽʽÿÀ.
ÀÌ ÁÖÁ¦¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ¼³¸íÀº ¿î¿µ ÀÚ¿ø °ü¸®¸¦ ÂüÁ¶ÇϽʽÿÀ.