GUI Designer – Æû ±â´É ¸¸µé±â

 

°³¿ä

ÀÌ ÅäÇÈÀº GUI µðÀÚÀ̳ÊÀÇ Æû ÀÛ¾÷À» Çϱâ À§ÇØ Äڵ带 ¾²´Â ±âÃʸ¦ ¼³¸íÇÕ´Ï´Ù.  ´ç½ÅÀÌ ÇÒ Çʿ䰡 ÀÖ´Â 3°³°¡ º»ÁúÀûÀ¸·Î ÀÖ½À´Ï´Ù:

*   Æû Ŭ·¡½º¸¦ À§ÇØ »ý¼ºÀÚ¸¦ »ý¼ºÇÕ´Ï´Ù

*   ÇÊµå ±¸¼º¿ä¼Ò¸¦ À§ÇÏ¿© ±â´É ±×·ì°ú ¾×¼ÇÀ» »ý¼ºÇÕ´Ï´Ù

*   ¼±ÅÃÀûÀ¸·Î Çʵå¿Í ÆûÀ» µ¥ÀÌÅÍ¿¡ ¹ÙÀεå ÇÏ´Â °ÔÅÍ/¼¼ÅÍ ¸Þ¼Òµå¸¦ »ý¼ºÇÕ´Ï´Ù

*   ·±Å¸ÀÓ ÃʱâÈ­ Äڵ带 »ý¼ºÇÕ´Ï´Ù


¹®¼­È­´Â ´ç½ÅÀÌ ¹ú½á ÀÚ¹ÙÀÇ UI ÇÁ·Î±×·¥ ÀÛ¼º¿¡ °üÇÑ ¹«¾ùÀΰ¡ ¾Ë°í ÀÖ°í, ´ç½ÅÀÌ ±â´ÉÀ» ´ç½ÅÀÌ GUI µðÀÚÀÌ³Ê¿Í ÇÔ²² Çü¼ºÇÏ´Â Æû¿¡ Ãß°¡Çϱâ À§ÇØ ÇÊ¿ä·Î ÇÏ´Â ±âÃʸ¦ Æ÷ÇÔ½Ãų °ÍÀ̶ó°í °¡Á¤ÇÕ´Ï´Ù.  ³ªÅ¸³ª´Â ¿¹´Â ÆûÀ» Çü¼ºÇÏ´Â ÇÁ·Î¼¼½ºÇÏ´Â µ¿¾È »ý¼ºµÈ Ŭ·¡½º¸¦ À§ÇØ ÀÖ½À´Ï´Ù. ±×·¯³ª ¿ø¸®´Â »ç¿ëÀÚ ÀÎÅÍÆäÀ̽º ±â´ÉÀ» Á¦°øÇÏ´Â ¾î¶² Ŭ·¡½º¶óµµ Àû¿ë °¡´ÉÇÕ´Ï´Ù.

form class ¿ë¾î´Â GUI µðÀÚÀÌ³Ê ÆûÀÌ  bound µÈ Ŭ·¡½º¸¦ ÂüÁ¶ÇÕ´Ï´Ù.


 

Æû Ŭ·¡½º¸¦ À§ÇÑ »ý¼ºÀÚ »ý¼º


´ç½ÅÀÌ GUI µðÀÚÀÌ³Ê Æû ºôµùÀ» ¸¶Ä¥ ¶§, ÃÖÀúÄ¡¿¡¼­ ´ç½ÅÀº ¾Æ·¡ ¿¹¿¡ Á¦½ÃµÈ °Íó·³ Ŭ·¡½ºÀÇ Æû°ú ±¸¼º ÇüÅ Çʵ忡¼­ Ŭ·¡½º¸¦ ¿©·¯ °¡Áö Æû ±¸¼º ¿ä¼Ò¿¡ ¹ÙÀεåÇØ¾ß¸¸ ÇÕ´Ï´Ù:

¸¸ÀÏ Æû Ŭ·¡½º°¡ Çϳª¸¦ ÀÌ¹Ì °¡ÁöÁö ¾ÊÀ¸¸é, ±×°ÍÀº ¿¹¸¦ µé¾î ¼³¸íµÇµµ·Ï Çϱâ À§ÇØ »ý¼ºÀÚ¸¦ ÇÊ¿äÇÕ´Ï´Ù.  ¸¸ÀÏ IDEA°¡ À̰ÍÀ» ÇÏ´Â °ÍÀ» µ½±â ¿øÇϸé, Alt + Insert¸¦ ´©¸£°í Constructor¸¦ ¼±ÅÃÇÕ´Ï´Ù.  ¸¸ÀÏ »ý¼ºÀÚ¿¡¼­ ÃʱâÈ­µÉ °ÍÀΠŬ·¡½º¿¡¼­ ´ç½ÅÀÌ ¾î¶² Çʵ带 °¡Áö¸é, ´ÙÀ̾ó·Î±×¿¡¼­ ±×µéÀ» ¼±ÅÃÇϽʽÿÀ. (»ý¼ºÀÚ¸¦ »ý¼ºÇÏ´Â °Í¿¡ °üÇÑ ´õ ¸¹Àº Á¤º¸¸¦ À§ÇØÄÚµå »ý¼º À» º¾´Ï´Ù).


Æû ÆÄÀϰú Æû Ŭ·¡½º ÆÄÀÏÀÌ °°Àº ÆÄÀÏ À̸§À» °®´Â °ÍÀº ÇÊ¿äÇÏÁö ¾Ê½À´Ï´Ù¸¸ÀÏ ±×µéÀÌ ±×·¸Áö ¾ÊÀ¸¸é ´ç½ÅÀº ¿¡·¯¸¦ ¾òÁö ¾Ê°Ô µÉ °ÍÀÔ´Ï´Ù. ±×·¯³ª ±×µé¿¡°Ô °°Àº ÆÄÀÏ À̸§À» ÁÖ´Â °ÍÀº ÁÁÀº ±Ô¾àÀ» µû¸£´Â °ÍÀÔ´Ï´Ù.


 

±â´É ±×·ì°ú ¾×¼Ç »ý¼º


Groups  

 

¸¸ÀÏ ´ç½ÅÀÌ ±×·ìÀ¸·Î¼­ ±â´ÉÇÒ Çʿ䰡 ÀÖ´Â ¿É¼Ç(¶óµð¿À)¹öư°ú °°Àº ±¸¼º ¿ä¼Ò¸¦ °¡Áö¸é, »ý¼ºÀÚ´Â ±×·ìÀ» »ý¼ºÇؾ߸¸ ÇÕ´Ï´Ù.  ¾Æ·¡ ¿¹´Â Äڵ带 ¿ì¸®ÀÇ ¿¹Á¦ Æû À§¿¡¼­ µÎ °³ÀÇ ¿É¼Ç ¹öưÀ» À§ÇØ ¹öư ±×·ìÀ» »ý¼ºÇϱâ À§ÇØ Ç¥½ÃÇÕ´Ï´Ù:

Actions  


¹öưÀ» ¿¹¸¦ µé¸é ¾×¼ÇÀ» ¼öÇàÇÏ´Â ±¸¼º ¿ä¼Ò¸¦ À§ÇØ ´ç½ÅÀº action listeners ¿Í action events ¸¦ ¾µ Çʿ䰡 ÀÖ½À´Ï´Ù.  ´ç½ÅÀº »ý¼ºÀÚ¿¡¼­ ¶Ç´Â ´ç½ÅÀÌ »ý¼ºÀÚ¸¦ ºÎ¸£´Â º°µµ ¸Þ¼Òµå·Î À̰ÍÀ» ÇÒ ¼ö ÀÖ½À´Ï´Ù.  ´Ü¼øÇÑ °¡ÀÔ ´ÙÀ̾ó·Î±×ÀÇ ¿ì¸® ¿¹´Â »ý¼ºÀÚ¿¡¼­ Á¦Ãâ ¹öưÀ» À§ÇÑ µ¿ÀÛ ¼ö½ÅÀÚ¿Í µ¿ÀÛ À̺¥Æ®¸¦ »ý¼ºÇÕ´Ï´Ù:

µ¥ÀÌÅÍ¿¡ ÇÊµå ¹Ù¿îµå¸¦ À§ÇÑ  °ÔÅÍ/¼¼ÅÍ ¸Þ¼Òµå¸¦ »ý¼º


¸¸ÀÏ ´ç½ÅÀÌ ¿øÇÏ´Â UI Ŭ·¡½º¿¡¼­ ´ç½ÅÀÌ Çʵ带 JavaBean Ŭ·¡½º¿¡¼­ ÀϺΠµ¥ÀÌÅÍ¿¡ ¹ÙÀεåÇÏ°Ô Çϸé, IDEA´Â ´ç½ÅÀÌ À̰ÍÀ» »¡¸® ±×¸®°í Á¤È®ÇÏ°Ô ÇÏ´Â °ÍÀ» µ½´Â Ưº°ÇÑData Binding Wizard ¸¦ Á¦°øÇÕ´Ï´Ù.  GUI µðÀÚÀ̳ÊÀÇ Æ¯Â¡, ´ç½ÅÀº UI Ŭ·¡½º¸¦ ¹Ù¿îµå ÇÏ´ÂGUI ÆûÀÇ ±¸¼º ¿ä¼Ò¿¡¼­ ¹ÙÀεåµÈ UI Ŭ·¡½º¿¡¼­ Çʵ忡 ´ëÇÑ getData¿Í setData ¸Þ¼Òµå¸¦ »ý¼ºÇϱâ À§ÇØ ÀÌ ¸¶¹ý»ç¸¦ ÀÌ¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.  ´ç½ÅÀº ±âÁ¸ bean Ŭ·¡½º¿¡¼­ µ¥ÀÌÅÍ ¹ÙÀεùÀ» »ý¼ºÇÒ ¼ö Àְųª, ¸¶¹ý»ç¸¦ ÀÌ¿ëÇÏ¿© »õ·Î¿î bean Ŭ·¡½º¸¦ »ý¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù.

¿¹¸¦ µé¸é, UI Ŭ·¡½º¿¡¼­ Çʵ忡 ¹ÙÀεåµÈ GUI Æû À§¿¡¼­ ´ç½ÅÀÌ ÀϺΠJTextField ±¸¼º ¿ä¼Ò¸¦ °¡Áø´Ù ¶ó°í °¡Á¤ÇϽʽÿÀ. ±×·¯¸é ´ç½ÅÀº JavaBean Ŭ·¡½º¿¡¼­ ÀϺΠµ¥ÀÌÅÍ¿¡ ¹ÙÀεåµÈ ±×µéÀÇ ÅØ½ºÆ® ¼Ó¼ºÀÇ °ªÀ» ¿øÇÕ´Ï´Ù.  ¹°·Ð ´ç½ÅÀº Çʵ忡 ´ëÇÑ getData¿Í setData ¸Þ¼Òµå¸¦ »ý¼ºÇϸ鼭, Á¤È®ÇÑ bean Ŭ·¡½ºÀÇ ¿ÏÀü ¼ö½ÄµÈ À̸§À» ÁöÁ¤Çϵµ·Ï ÁÖÀÇÇϰí, ÇÊ¿ä ÆÐŰÁö¸¦ ÀÓÆ÷Æ®Çϸ鼭 µé¾î°¥ ¼ö ÀÖ°í, UI Ŭ·¡½º¸¦ ÆíÁýÇÒ ¼ö ÀÖ¾ú½À´Ï´Ù.  ±×·¯³ª, ¸¶¹ý»ç¸¦ ¹ÙÀεåÇϰí ÀÖ´Â µ¥ÀÌÅÍ´Â ¹ÙÀεåµÈ UI Ŭ·¡½º¿¡ À־ÀÇ ¸Þ¼Òµå¸¦ ¹ÙÀεåÇϰí ÀÖ´Â µ¥ÀÌÅ͸¦ »ý¼ºÇÏ´Â ºü¸¥ ½Ã°¢Àû ¹æ¹ýÀ» Á¦°øÇÕ´Ï´Ù, ¶ÇÇÑ ´ç½ÅÀÌ »õ·Î¿î bean Ŭ·¡½º¸¦ ÇÊ¿äÇÏ´Ù¸é »ý¼ºÇÏ´Â °ÍÀ» °¡´ÉÇÏ°Ô ÇÕ´Ï´Ù.

 

À§¿¡¼­ ¾Ï½ÃÇÑ °Í ó·³, GUI ÆûÀº Ŭ·¡½º¿¡ ¹ÙÀεåµÉ °ÍÀÓ¿¡ Ʋ¸²¾ø½À´Ï´Ù. ±×¸®°í GUI ±¸¼º ¿ä¼Ò´Â Data Binding Wizard¸¦ ½ÇÇàÇϱâ Àü¿¡ Ŭ·¡½º¿¡¼­ ¾î¶² Çʵ忡 ¹ÙÀεåÀÏ °ÍÀÓ¿¡ Ʋ¸²¾ø½À´Ï´Ù.



Using the Data Binding Wizard: 


´ç½ÅÀÌ °ÔÅÍ/¼¼ÅÍ ¸Þ¼Òµå¸¦ »ý¼ºÇÏ°í ½Í¾îÇÏ´Â ±¸¼º ¿ä¼Ò¸¦ È®ÀÎÇÒ ¶§, ´ÙÀ½À» ÇϽʽÿÀ:

1.  GUI µðÀÚÀ̳ÊÀÇ Æû¿¡¼­ ½Ã°¢ ±¸¼º ¿ä¼Ò¸¦ ¼±ÅÃÇϽʽÿÀ.

2.  GUI µðÀÚÀÌ³Ê Åø¹Ù À§¿¡¼­, µ¥ÀÌÅÍ ¹ÙÀεù ¸¶¹ý»ç¸¦ °³½ÃÇϱâ À§ÇØ ¾ÆÀÌÄÜÀ» Ŭ¸¯ÇϽʽÿÀ:

3.  ù ¹øÂ° È­¸é À§¿¡¼­, »õ·Î¿î Bean ¶Ç´Â ±âÁ¸ÀÇ BeanÀÇ µ¥ÀÌÅ͸¦ ¹ÙÀεå ÇÒ °ÍÀÎÁö ¼±ÅÃÇϰí, ´ç½ÅÀÌ ¼±ÅÃÇÑ ¿É¼Ç¿¡ ´ëÇÑ Å¬·¡½º¸¦ ÁöÁ¤ÇϽʽÿÀ.

4.  ´ÙÀ½ È­¸éÀº µ¥ÀÌÅÍ ¹ÙÀεù¿¡ ÀûÇÕÇÏ°í ÆûÀÇ UI Ŭ·¡½º¿¡¼­ Çʵ忡 ¹ÙÀεåµÇ¾ú´ø Æû ±¸¼º ¿ä¼Ò¸¦ ¸®½ºÆ®ÇÕ´Ï´Ù. ¿À¸¥ÂÊ¿¡¼­ °¢ ±¸¼º ¿ä¼Ò À̸§Àº ´ç½ÅÀÌ ±¸¼º ¿ä¼Ò¸¦ À§ÇØ µ¥ÀÌÅÍ ¼Ò½º/Ÿ°ÙÀ¸·Î¼­ ¿øÇÏ´Â bean ¼Ó¼ºÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ´Â ÆíÁý ÇʵåÀÔ´Ï´Ù.

5.  µ¥ÀÌÅÍ ¹ÙÀεù Á¶ÀÛÀ» ¿Ï·áÇϱâ À§Çؼ­ Finish¸¦ ´©¸¨´Ï´Ù.


´ç½ÅÀÌ ¸¶¹ý»ç¸¦ ³¡³¾ ¶§, ´ç½ÅÀÌ ¸¶¹ý»ç¿¡°Ô¼­ ÁöÁ¤Çß´ø ¿É¼Ç¿¡ µû¶ó Á¤ÀÇ getData¿Í setData ¸Þ¼Òµå´Â ÆûÀÇ Å¬·¡½º¿¡ ½áÁý´Ï´Ù.  ÀÓÆ÷Æ® ½ºÅ×ÀÌÆ®¸ÕÆ®´Â Ŭ·¡½º¿¡¼­ ÇÊ¿äÇÑ ¸¸Å­ »ý¼ºµË´Ï´Ù.  ¸¸ÀÏ ´ç½ÅÀÌ Äڵ带 º¸°í, ´ç½ÅÀÌ ½Ç¼öÇß´Ù´Â °ÍÀ» ¹ß°ßÇϸé, ´ç½ÅÀº ±× ÀÌÀüÀÇ »óÅ·ΠÄڵ带 µ¹¸®±â À§ÇØ Undo¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.


ÀÏ´Ü ±¸¼º ¿ä¼Ò°¡ µ¥ÀÌÅÍ¿¡ ¹ÙÀÎµå µÇ¾ú´Ù¸é, ´ç½ÅÀº ¸¶¹ý»ç¸¦ ´Ù½Ã µ¥ÀÌÅÍ ¹ÙÀεù ¸¶¹ý»ç¸¦ È£ÃâÇÒ ¼ö ÀÖ½À´Ï´Ù. ±× °æ¿ì¿¡´Â, ´ç½ÅÀº  µ¥ÀÌÅÍ ¹ÙÀεùÀ» Á¦°ÅÇϰųª ´Ù¸¥ bean¿¡ ¹ÙÀεåÇÏ´Â ¿É¼ÇÀ» ºÎ¿©¹Þ½À´Ï´Ù.  ¸¸ÀÏ ´ç½ÅÀÌ ÈÄÀÚÀÇ ¿É¼ÇÀ» ¼±ÅÃÇϸé, ¸¶¹ý»ç´Â ´ç½ÅÀÌ µ¥ÀÌÅÍ ¹ÙÀεùÀ» À§ÇØ ¼±ÅÃÇϰųª, bean Ŭ·¡½º¸¦ »ý¼ºÇÏ´Â °ÍÀ» °¡´ÉÇÏ°Ô ÇÕ´Ï´Ù.  UI Ŭ·¡½º(ÀÓÆ÷Æ®¸¦ Æ÷ÇÔÇÏ´Â °Í)ÀÇ ¿ø½Ã ÄÚµå´Â ´ç½ÅÀÇ ¼±Åðú »ç¾ç¿¡ µû¶ó º¯°æµË´Ï´Ù.


·±Å¸ÀÓ ÃʱâÈ­ ÄÚµå »ý¼º


´ç½ÅÀÇ Äڵ忡¼­ ´ç½ÅÀº Æû Ŭ·¡½º¸¦ ½ÇÁõÇÏ´Â Äڵ带 °®´Â °ÍÀ» ÇÊ¿ä·Î ÇÕ´Ï´Ù.  ÆûÀÇ Å¬·¡½º°¡ ¶ÇÇÑ ¸ÞÀΠŬ·¡½º°¡ ÀÖ´Â ¿ì¸® ¿¹Á¦¿¡¼­, ¿ì¸®´Â ÆûÀ» À§ÇØ ·±Å¸ÀÓ ÇÁ·¹ÀÓÀ» »ý¼ºÇß½À´Ï´Ù.  ±×°ÍÀ» ÇÏ´Â °°Àº ¸Þ¼Òµå´Â ÇÁ·¹ÀÓÀÇ Æó±â óºÐÀ» ó¸®ÇÕ´Ï´Ù.  ¿ì¸®ÀÇ ÀÛÀº °¡ÀÔ ÆûÀÇ ¿¹´Â ÀÚ¸³Çü ÇÁ·Î±×·¥À¸·Î¼­ ½ÇÇàÇϰí, ±×·¡¼­ Æû Ŭ·¡½º´Â ·±Å¸ÀÓ ÇÁ·¹ÀÓÀÇ »ý¼º°ú Æó±â¸¦ ó¸®ÇÏ´Âmain() ¸Þ¼Òµå¸¦ °®½À´Ï´Ù:


ÀϺΠ¾ÖÇø®ÄÉÀ̼ÇÀÇ ºÎºÐÀÎ ´ëÈ­ »óÀÚ¸¦ À§ÇØ, ÀÌ GUI Æû ·±Å¸ÀÓ Äڵ尡 ¾ÖÇø®ÄÉÀ̼ÇÀÇ ¸ÞÀΠŬ·¡½º¿¡ ¹°·Ð ÀÖÁö ¾ÊÀ» °ÍÀÔ´Ï´Ù. Ŭ·¡½º°¡ ÆûÀ» »ç¿ëÇÒ Çʿ䰡 ¹«¾ùÀÌ´øÁö °£¿¡ ´ç½ÅÀº ±×°Í¿¡ ºÎ¸¦ °Í ÀÔ´Ï´Ù.