ÀÌ·± Àǹ®À» °¡Á® º¸½Å ºÐÀº ¾ø´ÂÁö¿ä. ¾î¶»°Ô ÄÄÆ÷³ÍÆ®µéÀ» Frame¿¡ ¹èÄ¡ÇÒ ¼ö ÀÖÀ»±î? ´ç¿¬È÷ ±×³ÉÀº ¾Æ´Õ´Ï´Ù. ¾î¶² ±ÔÄ¢¿¡ ÀÇÇØ¼ ÄÄÆ÷³ÍÆ®¸¦ ContainerÄÄÆ÷³ÍÆ® ³»·Î »ðÀÔÇÕ´Ï´Ù. ¹èÄ¡¿Í °ü·ÃµÈ »çÇ×µéÀ» °ü¸®ÇÏ´Â °ÍÀÌ ¹Ù·Î LayoutManagerÀÔ´Ï´Ù. ÀÚ¹Ù¿¡¼ »ç¿ëÇÏ´Â LayoutManager´Â ´ÙÀ½°ú °°½À´Ï´Ù.
n BorderLayout
n FlowLayout
n GridLayout
n CardLayout
n GridBagLayout
13.2Àý¿¡¼ »ç¿ëÇÑ LayoutÀº FlowLayoutÀ̶ó´Â °ÍÀ» ÀÌ¹Ì ¾Ë°í °è½ÃÁÒ. À̵é LayoutÀ» ÇÁ·Î±×·¥ÀûÀ¸·Î ÇϳªÇϳª ¾Ë¾Æº¸°í ±×¸®°í °¢°¢ÀÇ ÄÄÆ÷³ÍÆ®¸¦ ´Ù·ç´Â ¹æ¹ý¿¡ ´ëÇØ¼ ¾Ë¾Æ º¸µµ·Ï ÇϰڽÀ´Ï´Ù. ¸ÕÀú BorderLayoutºÎÅÍ ¾Ë¾Æ º¸µµ·Ï ÇϰڽÀ´Ï´Ù.
BorderLayout°ü¸®ÀÚ´Â ÇÁ·¹ÀÓ(Frame)ÄÄÆ÷³ÍÆ®¿Í ´ëÈ»óÀÚ(Dialog)ÄÄÆ÷³ÍÆ®µî°ú °°Àº ¸ðµç À©µµ¿ì(Window)ÄÄÆ÷³ÍÆ®¸¦ À§ÇÑ µðÆúÆ® ·¹À̾ƿô°ü¸®ÀÚÀÔ´Ï´Ù. FrameÀº µðÆúÆ®°¡ BorderLayoutÀ̶ó´Â °ÅÁÒ. ±× ¿µ¿ªÀ» µ¿(east), ¼(west), ³²(south), ºÏ(north), ±×¸®°í Áß¾Ó(center)µî ´Ù¼¸ °³ÀÇ ¿µ¿ªÀ¸·Î ³ª´©¾î ÄÄÆ÷³ÍÆ®¸¦ »ðÀÔÇÒ ¼ö ÀÖ½À´Ï´Ù. BorderLayout¿¹Á¦¸¦ º¸µµ·Ï ÇϰڽÀ´Ï´Ù.
BorderLayoutTest.java |
import java.awt.*; public class BorderLayoutTest extends Frame { public BorderLayoutTest() { Panel w1 = new Panel(); w1.setLayout(new BorderLayout(10, 5)); w1.add("East", new Button("W1-East")); w1.add("West", new Button("W1-West")); w1.add("North", new Button("W1-North")); w1.add("Center", new Button("W1-Center")); w1.add("South", new Button("W1-South")); Panel w2 = new Panel(); w2.setLayout(new BorderLayout(10, 5)); w2.add("East", new Button("W2-East")); w2.add("West", new Button("W2-West")); w2.add("North", new Button("W2-North")); w2.add("South", new Button("W2-South")); Panel w3 = new Panel(); w3.setLayout(new BorderLayout(10, 5)); w3.add("Center", new Button("W3-Center")); Panel w4 = new Panel(); BorderLayout b = new BorderLayout(8, 16); w4.setLayout(b); w4.add("East", new Button("W4-East")); w4.add("West", new Button("W4-West")); w4.add(new Button("W4-Center")); this.setLayout(new GridLayout(2,2)); this.add(w1); this.add(w2); this.add(w3); this.add(w4); } public static void main(String args[]) { BorderLayoutTest f = new BorderLayoutTest(); f.pack(); f.setTitle("BorderLayout"); f.setVisible(true); } } |
C:\JavaExample\13>javac BorderLayoutTest.java C:\JavaExample\13>java BorderLayoutTest
|
¿¹Á¦°¡ ¾à°£ ±äµíÇÏÁö¸¸ ±ÔÄ¢¼ºÀ» Àß µûÁö°í º¸¸é ±×·¸°Ô ±ä ¿¹Á¦µµ ¾Æ´Õ´Ï´Ù. ÀÏ´Ü Panel 4°³¸¦ »ý¼ºÇÕ´Ï´Ù. PanelÀº Container°è¿ÀÇ ÄÄÆ÷³ÍÆ®À̱⠶§¹®¿¡ ´Ù¸¥ ÄÄÆ÷³ÍÆ®¸¦ Æ÷ÇÔ ÇÒ ¼ö ÀÖ½À´Ï´Ù.
n Panel w1 = new Panel();
n Panel w2 = new Panel();
n Panel w3 = new Panel();
n Panel w4 = new Panel();
±×¸®°í °¢°¢ÀÇ PanelÀ» ÀüºÎ BorderLayoutÀ¸·Î ¼ÂÆÃÇϰí ÀÖ½À´Ï´Ù.
n w1.setLayout(new BorderLayout(10, 5));
n w2.setLayout(new BorderLayout(10, 5));
n w3.setLayout(new BorderLayout(10, 5));
n w4.setLayout(new BorderLayout(10, 5));
n BorderLayoutÀÇ ¸Å°³º¯¼ö´Â ¼öÆògap°ú ¼öÁ÷gapÀ» ÀǹÌÇÕ´Ï´Ù. µ¿¼³²ºÏ Áß¾Ó¿¡ ¹èÄ¡µÈ ÄÄÆ÷³ÍÆ®¿ÍÀÇ gapÀ» ÀǹÌÇÕ´Ï´Ù.
Panel w1,w2,w3,w4ÀÇ ¸â¹ö¸Þ¼µåÀÎ setLayout¸Þ¼µå°¡ ¹Ù·Î LayoutÀ» ¼ÂÆÃÇÏ´Â ¸Þ¼µåÀÔ´Ï´Ù. PanelÀÇ µðÆúÆ® ·¹À̾ƿôÀº FlowLayoutÀÌÁö¸¸ BorderLayoutÀ¸·Î º¯°æÇÑ °ÍÀÔ´Ï´Ù. ±×¸®°í FrameÀÚüÀÇ Layoutµµ Á¸ÀçÇØ¾ß ÇÕ´Ï´Ù. ¿ø·¡ FrameÀº BorderLayoutÀÌÁö¸¸ PanelÀ» º¸±â ÁÁ°Ô Çϱâ À§Çؼ Grid¿Í °°Àº ±¸Á¶¸¦ °¡Áö°í ÀÖ´Â GridLayout 2X2·Î ¼ÂÆÃÇÏ¿´½À´Ï´Ù.
n this.setLayout(new GridLayout(2,2));
±×¸®°í °¢°¢ÀÇ Panel¿¡ µ¿¼³²ºÏ, Áß¾ÓÀ¸·Î ButtonÀ» ¸¸µé¾î¼ Áý¾î ³Ö°í ÀÖ½À´Ï´Ù. Panel¿¡ »ðÀÔÇÒ ¶§ À§Ä¡¿Í ¹öưÀÇ °´Ã¼¸¦ ³Ö¾î ÁÖ°í ÀÖ½À´Ï´Ù. À§Ä¡´Â ´ÙÀ½°ú °°ÀÌ °áÁ¤ÇÕ´Ï´Ù.
n w1.add("East", new Button("W1-East"));//µ¿
n w1.add("West", new Button("W1-West"));//¼
n w1.add("South", new Button("W1-South"));//³²
n w1.add("North", new Button("W1-North"));//ºÏ
n w1.add("Center", new Button("W1-Center"));//Áß¾Ó
w1ÆÐ³Î°ú °°ÀÌ ÀüºÎ ´Ù ³Ö¾î ÁÖ´Â °æ¿ìµµ ÀÖÁö¸¸ ±×·¸Áö ¾ÊÀº °æ¿ìµµ ÀÖ½À´Ï´Ù. À̰ÍÀ» Àß ºñ±³ÇØ º¸½Ã±â ¹Ù¶ø´Ï´Ù. ¸¶Áö¸·À¸·Î ÆÐ³ÎÀ» Frame¿¡ ¼ø¼´ë·Î ³Ö¾î ÁÖ°í ÀÖ½À´Ï´Ù. GridLayout 2X2´Â ¼ø¼´ë·Î »ðÀԵDZ⠶§¹®¿¡ °ÆÁ¤ÇÏÁö ¾Ê¾Æµµ µË´Ï´Ù. 2X2À̱⠶§¹®¿¡ ÆÐ³Î 4°³°¡ µü µé¾î°¥ ¼ö ÀÖ½À´Ï´Ù.
n this.add(w1);
n this.add(w2);
n this.add(w3);
n this.add(w4);
Frame¿¡ ÆÐ³ÎÀ» ÀüºÎ»ðÀÔÇÏ°í ³ª¸é ¸ðµç ÀÛ¾÷Àº ³¡ÀÌ ³³´Ï´Ù. ±×¸®°í À̰ÍÀ» º¸À̱â À§Çؼ´Â FrameÀÇ setSize¿Í show¸Þ¼µå¸¦ È£ÃâÇØ¾ß ÇÏÁö¸¸ ¿©±â¼´Â setSize´ë½Å¿¡ pack¸Þ¼µå¸¦ È£ÃâÇϰí ÀÖ½À´Ï´Ù. ÀûÀýÇÑ »çÀÌÁî·Î ¸ÂÃß¾î ÁÖ´Â ¿ªÇÒÀ» ÇÕ´Ï´Ù. ¹°·Ð setSize¸¦ »ç¿ëÇϼŵµ µË´Ï´Ù.
FlowLayoutÀº È帧 Layout ¶Ç´Â ÆøÆ÷ LayoutÀ¸·Î »ý°¢ÇÏ½Ã¸é µÉ °Í °°½À´Ï´Ù. ÇÃ·Î¿ì ·¹À̾ƿô °ü¸®ÀÚ´Â ÄÄÆ÷³ÍÆ®¸¦ ÄÁÅ×À̳ÊÀÇ ¿ÞÂÊ¿¡¼ ¿À¸¥ÂÊÀ¸·Î Çϳª¾¿ ä¿ö°¡´Ù°¡ ¿À¸¥ÂÊ ³¡¿¡ ´Ù´Ù¸£¸é ´ÙÀ½ ÁÙ·Î ³Ñ¾î°¡°Ô µË´Ï´Ù. ´ÙÀ½Àº FlowLayout¿¡ °ü·ÃµÈ ¿¹Á¦ÀÔ´Ï´Ù.
FlowLayoutTest.java(FlowLayoutÀ» Å×½ºÆ®Çϱâ À§ÇÑ ¿¹Á¦) |
import java.io.*; import java.awt.*; public class FlowLayoutTest extends Frame{ public FlowLayoutTest() { this.setLayout(new FlowLayout()); this.add(new Button("Button 1")); this.add(new Button("Button 2")); this.add(new Button("Button 3")); this.add(new Button("Button 4")); this.add(new Button("Button)); Choice colorChooser = new Choice(); colorChooser.add("Green"); colorChooser.add("Red"); colorChooser.add("Blue"); this.add(colorChooser, "Colors"); } public static void main(String args[]) { FlowLayoutTest f = new FlowLayoutTest(); f.pack(); f.setTitle("FlowLayout"); f.setVisible(true); } } |
C:\JavaExample\13>javac FlowLayoutTest.java C:\JavaExample\13>java FlowLayoutTest |
ÀÌ ¿¹Á¦¿¡¼´Â FlowLayoutÀÇ ¿¹¸¦ º¸¿© ÁÖ°í ÀÖ½À´Ï´Ù. ÀÏ´Ü FrameÀ» FlowLayoutÀ¸·Î ¼ÂÆÃÇÕ´Ï´Ù.
n this.setLayout(new FlowLayout());
±×¸®°í Frame¿¡ Button ÄÄÆ÷³ÍÆ® 5°³¿Í ChoiceÄÄÆ÷³ÍÆ® 1°³¸¦ »ðÀÔÇϰí ÀÖ½À´Ï´Ù. FlowLayoutÀº ¸»±×´ë·Î È帧 LayoutÀÔ´Ï´Ù. ¿©·¯ºÐµéÀÌ FrameÀÇ »çÀÌÁ º¯°æÇØ º¸¸é ¿Ö È帧 LayoutÀ̶ó°í ÇÏ´ÂÁö ½±°Ô ÀÌÇØ ÇÏ½Ç ¼ö ÀÖÀ» °Ì´Ï´Ù.
n this.add(new Button("Button 1"));
n this.add(new Button("Button 2"));
n this.add(new Button("Button 3"));
n this.add(new Button("Button 4"));
n this.add(new Button("Button"));
n this.add(colorChooser, "Colors");//Choice »ðÀÔ
FlowLayoutÀº Panel°ú AppletÀÇ µðÆúÆ® LayoutÀ̸ç ContainerÅ©±â¿¡ µû¶ó¼ ÀÚµ¿À¸·Î ±× »ðÀÔÀ§Ä¡°¡ È帧¿¡ µû¶ó ¹Ù²îµµ·Ï µÇ¾î ÀÖ½À´Ï´Ù.
ÀÌ ±×¸²µéÀº »çÀÌÁî¿¡ µû¶ó¼ ÄÄÆ÷³ÍÆ®°¡ º¯°æµÇ´Â °ÍÀ» º¸¿© ÁÖ°í ÀÖ½À´Ï´Ù.
±×¸®µå ·¹À̾ƿô °ü¸®ÀÚ´Â ÄÁÅ×À̳ÊÀÇ ¿µ¿ªÀ» ÁÖ¾îÁø Çà°ú ¿ Å©±âÀÇ ¼¿µé·Î ³ª´©°í µ¿µîÇÑ Å©±âÀÇ °¢ ¼¿¿¡ ÄÄÆ÷³ÍÆ®¸¦ Çϳª¾¿ À§Ä¡½ÃŰ¹Ç·Î ¸ðµç ÄÄÆ÷³ÍÆ®ÀÇ Å©±â´Â µ¿ÀÏÇÏ°Ô µË´Ï´Ù. ±×¸®µå ·¹À̾ƿô °ü¸®ÀÚ´Â ¼¿ ´ÜÀ§ÀÇ ·¹À̾ƿôÀ» ¼öÇàÇϰí ÀÌ·¯ÇÑ ¼¿À» »ç°¢Çü ±×¸®µå(rectangular grid)¶ó ÇÒ ¼ö ÀÖÀ¸¹Ç·Î ±×¸®µå ·¹À̾ƿô °ü¸®ÀÚ¶ó ÇÏ´Â °ÍÀÔ´Ï´Ù. ¿¹¸¦ º¸µµ·Ï ÇÏÁÒ.
GridLayoutTest.java(GridLayoutÅ×½ºÆ®¸¦ À§ÇÑ ¿¹Á¦) |
import java.io.*; import java.awt.*; public class GridLayoutTest extends Frame { public GridLayoutTest() { Panel p1 = new Panel(new GridLayout()); p1.add(new Button("Button 1")); p1.add(new Button("Button 2")); p1.add(new Button("Button 3")); p1.add(new Button("Button 4")); p1.add(new Button("Button 5")); Panel p2 = new Panel(new GridLayout(2, 3)); p2.add(new Button("Button 1")); p2.add(new Button("Button 2")); p2.add(new Button("Button 3")); p2.add(new Button("Button 4")); p2.add(new Button("Button 5")); add("North", p1); add("Center", p2); } public static void main(String args[]) { GridLayoutTest f = new GridLayoutTest(); f.pack(); f.setTitle("GridLayout"); f.setVisible(true); } } |
C:\JavaExample\13>javac GridLayoutTest.java C:\JavaExample\13>java GridLayoutTest |
ÆÐ³Î 2°³¸¦ »ý¼ºÇÏ°í »ý¼º°ú µ¿½Ã¿¡ LayoutÀ» ÁöÁ¤Çϰí ÀÖ½À´Ï´Ù.
n Panel p1 = new Panel(new GridLayout()); à 1X?À¸·Î ¼ÂÆÃÇϰí ÀÖ½À´Ï´Ù.
n Panel p2 = new Panel(new GridLayout(2, 3));à2X3À¸·Î ¼ÂÆÃÇϰí ÀÖ½À´Ï´Ù.
ÆÐ³Î2°³´Â FrameÀÇ µðÆúÆ® LayoutÀÎ BorderLayoutÀÇ ¹æ¹ýÀ¸·Î »ðÀԵǰí ÀÖ½À´Ï´Ù.
n add("North", p1);
n add("Center", p2);
p1°ú p2¿¡ ¹öưÀº GridLayoutÀÌ Á¤ÇØÁø Grid¿¡ µû¶ó¼ Â÷·Ê´ë·Î »ðÀԵǾîÁý´Ï´Ù.
Ä«µå ·¹À̾ƿô ¸Å´ÏÀú´Â ¿©·¯ ÀåÀÇ Ä«µå¸¦ °ãÃÄ ¹èÄ¡ÇÏ´Â ½ÄÀ¸·Î °ü¸®Çϰí, ÄÁÅ×À̳ʰ¡ Æ÷ÇÔÇϰí ÀÖ´Â ÄÄÆ÷³ÍÆ®µéÀ» ÇÑ ÀåÀÇ Ä«µåó·³ ´Ù·ç¾î, ÇÑ ¹ø¿¡ ÇÑ À徿 »ç¿ëÀÚ°¡ º¸±â¸¦ ¿øÇÏ´Â Ä«µå¸¦ º¸¿©ÁÖ´Â °ÍÀÔ´Ï´Ù. ÀÌ·¸°Ô ÀÌ Å¬·¡½º´Â ¿©·¯ °³ÀÇ ·¹À̾ƿôÀ» ÀúÀåÇÑ´Ù´Â Á¡¿¡¼ ´Ù¸¥ ·¹À̾ƿô ¸Å´ÏÀúµé°ú ¾à°£ ´Ù¸¨´Ï´Ù. ÀÌ·¯ÇÑ Çü½ÄÀÇ ·¹À̾ƿô ¸Å´ÏÀú´Â »ç¿ëÀÚÀÇ ¿É¼ÇÀ» ÀԷ¹ޱâ À§ÇØ À©µµ¿ì¿¡¼ ¸¹ÀÌ »ç¿ëµÇ¾îÁý´Ï´Ù.
´ÙÀ½ÀÇ ¿¹Á¦´Â ¼¼ °³ÀÇ ÄÄÆ÷³ÍÆ®¸¦ ÇÁ·¹ÀÓ¿¡ Ãß°¡ÇÏ¿©, À̸¦ Ä«µå ·¹À̾ƿô °ü¸®ÀÚ¸¦ ÀÌ¿ëÇÏ¿© °ü¸®Çϰí ÀÖ½À´Ï´Ù. µû¶ó¼, ¼¼ ÀåÀÇ Ä«µå¸¦ °¡Áö°í ÀÖ´Ù°í º¼ ¼ö ÀÖ½À´Ï´Ù.
±× Áß Ã¹¹øÂ° ÄÄÆ÷³ÍÆ®´Â ÆÐ³Î°´Ã¼¸¦ »ý¼ºÇÏ¿© BorderLayout ¼³Á¤À¸·Î »ó, Áß, ÇÏÀÇ ¼¼ ºÎºÐÀÇ ¹öưÀ¸·Î ³ª´©¾ú°í,
µÎ¹øÂ° ÄÄÆ÷³ÍÆ®´Â ÆÐ³Î°´Ã¼¸¦ »ý¼ºÇÏ¿©¼ ¹öư 2°³¸¦ Ãß°¡½ÃÄ×À¸¸ç,
¼¼¹øÂ° ÄÄÆ÷³ÍÆ®´Â ±× ÀÚü°¡ ¹öưÀ¸·Î Ãß°¡½ÃÄ×½À´Ï´Ù.
±×¸®°í, ¸®ÅÏ۸¦ Ä¡¸é ´ÙÀ½ Ä«µå·Î ¹Ù²Ùµµ·Ï µÇ¾î ÀÖ½À´Ï´Ù.
CardLayoutTest |
import java.io.*; import java.awt.*; class CardLayoutTest extends Frame { CardLayout c=null; public CardLayoutTest() { c = new CardLayout(); setLayout(c); Panel p1 = new Panel(); p1.setLayout(new BorderLayout()); p1.add("North", new Button("»ó´Ü")); p1.add("Center", new Button("Áß´Ü")); p1.add("South", new Button("ÇÏ´Ü")); Panel p2 = new Panel(); p2.add(new Button("¹öư 1")); p2.add(new Button("¹öư 2")); add(p1, "BorderLayout"); add(p2, "DefaultLayout"); add(new Button("Å«¹öư"), "Button"); } public static void main(String args[]) { CardLayoutTest f = new CardLayoutTest(); int ch; f.pack(); f.setTitle("CardLayout"); f.setVisible(true); try { while((ch=System.in.read()) != -1) { if(f.c != null) { f.c.next(f); } } } catch(IOException e){System.out.println(e); } } } |
D:\java\awt>javac CardLayoutTest.java |
½ÇÇà°á°ú´Â óÀ½ ½ÇÇà½Ã۸é ù¹øÂ° Ä«µå°¡ ³ª¿À°í, ¿£ÅÍ۸¦ Ä¥ ¶§ ¸¶´Ù ´ÙÀ½ Ä«µå·Î ¹Ù²ò´Ï´Ù. ±×·±µ¥ ¿©±â¼ ¼Ò½º¸¦ ÀÚ¼¼È÷ º¸½Å ºÐÀÌ¸é ¹º°¡ ÀÌ»óÇÏ´Ù°í ´À³¥ÅÙµ¥, Ä«µå°¡ ³ª¿À´Â ¼ø¼°¡ ¼Ò½º¿¡¼ÀÇ Ã¹¹øÂ°, ¼¼¹øÂ°, µÎ¹øÂ° ¼øÀ¸·Î ÇÑľ¿ °Ç³Ê¼ ³ª¿Â´Ù´Â °ÍÀÔ´Ï´Ù. À̰ÍÀº MS ¿î¿µÃ¼Á¦¿¡¼´Â ¸®ÅÏ۰¡ '\n'¿Í '\r' µî µÎ ¹®ÀÚ·Î ±¸¼ºµÇ±â ¶§¹®¿¡ µÎ °³ÀÇ Å°°¡ ÃÄÁø °Íó·³ Ä«µå°¡ µÎ À徿 ³Ñ¾î°¡°Ô µË´Ï´Ù. ±×·¸±â ¶§¹®¿¡ À§¿Í °°ÀÌ ¸®ÅÏ۸¦ ÀÔ·Â¹Þ¾Æ Ä«µå ·¹À̾ƿô °ü¸®ÀÚ¸¦ Å×½ºÆ®ÇϰíÀÚ ÇÑ´Ù¸é, Ä«µå´Â µÎ À徿 ³Ñ¾î°¡±â ¶§¹®¿¡ Ȧ¼ö ÀåÀ» ¸¸µé¾î¾ß ÇÕ´Ï´Ù.
Ä«µå ·¹À̾ƿô °´Ã¼ c¸¦ »ý¼ºÇÑ ÈÄ, ·¹À̾ƿôÀ» Ä«µå ·¹À̾ƿôÀ¸·Î ¼³Á¤ÇÕ´Ï´Ù.
n c = new CardLayout();
n setLayout(c);
ÆÐ³Î °´Ã¼ p1À» »ý¼ºÇÏ¿©, º¸´õ ·¹À̾ƿôÀ¸·Î ¼³Á¤ÇÕ´Ï´Ù.
n Panel p1 = new Panel();
n p1.setLayout(new BorderLayout());
°´Ã¼ p1¿¡ ¹öưÀ» Ãß°¡ ÇÕ´Ï´Ù.
n p1.add("North", new Button("»ó´Ü"));
n p1.add("Center", new Button("Áß´Ü"));
n p1.add("South", new Button("ÇÏ´Ü"));
ÆÐ³Î°´Ã¼ p2¸¦ »ý¼ºÇÏ¿© ¹öưÀ» Ãß°¡ÇÕ´Ï´Ù.
n Panel p2 = new Panel();
n p2.add(new Button("¹öư 1"));
n p2.add(new Button("¹öư 2"));
Ä«µå¿¡ ÆÐ³Î p1, p2 ¹× ¹öưÀ» Ãß°¡ ½Ãŵ´Ï´Ù. ±×·±µ¥ ¿©±â¼ ´«¿©°Üº¼ Á¡Àº ÆÐ³Î p1Àº »ý¼ºÇÒ ¶§ ¼³Á¤ÇØ ÁØ´ë·Î ¡®BorderLayout¡¯À¸·Î Ãß°¡µÇÁö¸¸ p2´Â »ý¼º½Ã µû·Î ¼³Á¤ÇÏÁö ¾Ê¾Æ¼ µðÆúÆ® ·¹À̾ƿôÀ¸·Î Ãß°¡ µÈ´Ù´Â Á¡ÀÔ´Ï´Ù. ÀÌ ¾ÕÀå¿¡¼ ¼³¸íÇßµíÀÌ ÆÐ³ÎÀÇ µðÆúÆ® ·¹À̾ƿôÀº ¡®FlowLayout¡¯ÀÔ´Ï´Ù.
n add(p1, "BorderLayout");
n add(p2, "DefaultLayout");
n add(new Button("Å«¹öư"), "Button");
CardLayoutTest°´Ã¼ f¸¦ »ý¼ºÇÕ´Ï´Ù.
n CardLayoutTest f = new CardLayoutTest();
¿£Å͸¦ Ä¥ ¶§¸¶´Ù ´ÙÀ½Ä«µå¸¦ º¸¿©ÁÝ´Ï´Ù.
n while((ch=System.in.read()) != -1) {
if(f.c != null) {
f.c.next(f);
}
}
Ä«µå ·¹À̾ƿôÀº ÄÄÆ÷³ÍÆ®µéÀ» Ä«µå¿Í °°ÀÌ ´Ù·ç¾î Çѹø¿¡ Çѹø¾¿ »ç¿ëÀÚ°¡ ¿øÇÏ´Â Ä«µå Áï, ÄÄÆ÷³ÍÆ®¸¦ º¸¿©ÁÖ´Â °ÍÀÔ´Ï´Ù. ±×¸®°í ¿©·¯ ÄÄÆ÷³ÍÆ®°¡ Ä«µå ·¹À̾ƿô¿¡ µî·ÏÀÌ µÉ ¶§¿¡´Â °¡Àå óÀ½ µî·ÏµÈ ÄÄÆ÷³ÍÆ®¸¦ µðÆúÆ®·Î º¸¿©ÁÝ´Ï´Ù. À§ÀÇ ¿¹Á¦ ÇÁ·Î±×·¥¿¡¼´Â Ä«µå ·¹À̾ƿôÀÇ Àǹ̸¦ Àü´ÞÇϰíÀÚ, ´Ü¼øÈ÷ ¼¼°³ÀÇ ÄÄÆ÷³ÍÆ®°¡ Ä«µå ·¹À̾ƿôÀ¸·Î ¹Ù²î´Â °Í ¸¸À» º¸¿© ÁÖ¾ú½À´Ï´Ù. ¿©±â¼´Â ¾ÆÁ÷ ¹öưÀÌ Àǹ̰¡ ¾øÁö¸¸ ´ÙÀ½ Àå¿¡¼ À̺¥Æ® ó¸®ÀÇ ÀÚ¼¼ÇÑ »çÇ×À» ¹è¿ì°í ³ª¸é ÀÌ ¹öưµéÀ» ´Ù¾çÇÏ°Ô ÀÌ¿ëÇÒ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù.
CardLayout »ý¼ºÀÚ ¸Þ¼µå |
CardLayout():µðÆúÆ® Ä«µå·¹À̾ƿô »ý¼ºÀÚ CardLayout(int horz, int vert):¼öÆò, ¼öÁ÷À» ÁöÁ¤ÇÒ ¼ö ÀÖ´Â »ý¼ºÀÚ |
CardLayout ÀÏ¹Ý ¸Þ¼µå |
void first(Container parent):ÄÁÅ×À̳ÊÀÇ Ã¹ ¹øÂ° Ä«µå¸¦ º¸¿©ÁÝ´Ï´Ù. void last(Container parent):ÄÁÅ×À̳ÊÀÇ ¸¶Áö¸· ¹øÂ° Ä«µå¸¦ º¸¿©ÁÝ´Ï´Ù. void next(Container parent):ÄÁÅ×À̳ÊÀÇ ´ÙÀ½ Ä«µå¸¦ º¸¿©ÁÝ´Ï´Ù. void previous(Container parent):ÄÁÅ×À̳ÊÀÇ ÀÌÀü Ä«µå¸¦ º¸¿©ÁÝ´Ï´Ù. void show(Container parent, String name):À̸§ÀÌ nameÀÎ Ä«µå¸¦ º¸¿©ÁÝ´Ï´Ù. void removeLayoutComponent(Component comp):ÁÖ¾îÁø ÄÄÆ÷³ÍÆ®¸¦ Á¦°ÅÇÕ´Ï´Ù. Void addLayOutComponent(Component comp, Object constraints):ÁÖ¾îÁø ÄÄÆ÷³ÍÆ®¸¦ Ä«µå ·¹À̾ƿô °ü¸®ÀÚÀÇ ³»ºÎ À̸§ Å×ÀÌºí¿¡ »ðÀÔÇÕ´Ï´Ù |
GridBagLayoutÀº ÀÚ¹Ù awt¿¡¼ Á¦°øÇÏ´Â Layout Áß °¡Àå ³À̵µ°¡ ³ôÀº LayoutÀÔ´Ï´Ù. ÃÊ±Þ ÀÚ¹ÙÃ¥¿¡¼´Â °ÅÀÇ ¼³¸íÇÏÁö ¾Ê°í Áö³ª°¡´Â °æ¿ìµµ ¸¹½À´Ï´Ù. ÀÌ GridBagLayoutÀº
GridLayout °ú À¯»çÇÏÁö¸¸, ÀϹÝÀûÀ¸·Î º¹ÀâÇϰųª ´Ù¾çÇÑ ÇüÅÂÀÇ Layout À» ±×¸± ¶§ »ç¿ë
ÇÕ´Ï´Ù. ÀÌ Layout¿¡¼´Â °¢ ÄÄÆ÷³ÍÆ®µéÀÇ Å©±â°¡ °¢°¢ ´Ù¸£´õ¶óµµ Å©°Ô ¿µÇâÀ» ¹ÞÁö ¾Ê½À´Ï´Ù. ÀÌÀ¯´Â Layout ¿µ¿ªÀ» °¢ ¼¿·Î ºÐÇÒÇÏ¿©, °¢ ÄÄÆ÷³ÍÆ®¸¶´Ù ¼·Î ´Ù¸¥ Å©±â¸¦ °®µµ·Ï Çà°ú ¿À» ÁöÁ¤ÇÒ ¼ö Àֱ⠶§¹®ÀÔ´Ï´Ù.
¾Æ·¡ÀÇ ¿¹Á¦´Â GridBagLayout À» »ç¿ëÇØ¼ ¸ÞÀÏ Çü½ÄÀ» ³ªÅ¸³½ °£´ÜÇÑ ¿¹Á¦ÀÔ´Ï´Ù.
GridBagLayout ¿¹Á¦ |
import java.awt.*; public class GridBagLayoutTest extends Frame { TextField toPerson, file; TextArea body; GridBagLayout gbl; GridBagConstraints gbc; public GridBagLayoutTest() { toPerson = new TextField(40); file = new TextField(30); body = new TextArea(5, 40); gbl = new GridBagLayout(); gbc = new GridBagConstraints(); setLayout(gbl); gbc.fill = GridBagConstraints.BOTH; gbc.weightx = 1.0; gbc.weighty = 1.0; add(new Label("¹Þ´Â »ç¶÷: ", Label.RIGHT), 0, 0, 1, 1); add(toPerson, 1, 0, 3, 1); add(new Label("³» ¿ë: ", Label.RIGHT), 0, 1, 1, 1); add(body, 1, 1, 3, 1); add(new Label("÷ºÎ ÆÄÀÏ: ", Label.RIGHT), 0, 2, 1, 1); add(file, 1, 2, 2, 1); add(new Button("ã¾Æº¸±â"),3,2,1,1); add(new Button("Send"), 0, 3, 4, 1); pack(); } private void add(Component c, int x, int y, int w, int h) { gbc.gridx = x; gbc.gridy = y; gbc.gridwidth = w; gbc.gridheight = h; gbl.setConstraints(c, gbc); add(c); } public static void main(String args[]) { GridBagLayoutTest f = new GridBagLayoutTest(); f.setTitle("GridBagLayout"); f.setSize(400,200); f.setVisible(true); } } |
Ãâ·Â°á°ú |
|
GridBagLayout À» »ç¿ëÇϱâ À§Çؼ´Â ¸ÕÀú Á¾ÀÌ¿Í ÆæÀ» µé°í µðÀÚÀÎÀ» ÇÏ¿©¾ß ÇÕ´Ï´Ù. µðÀÚÀÎÀ» ´Ù ±×¸° ÈÄ¿¡ ¼¿À» ³ª´©¾î¾ß ÇÕ´Ï´Ù. À§ÀÇ ¿¹Á¦´Â ¾Æ·¡¿Í °°ÀÌ ¼¿À» ³ª´©¾ú½À´Ï´Ù.
¹Þ´Â »ç¶÷ |
(toPerson ÀÇ ½ÃÀÛ) |
|
|
³» ¿ë |
|
|
|
÷ ºÎ ÆÄ ÀÏ |
|
|
ã¾Æº¸±â |
Send |
|
|
|
¼¿À» ³ª´« ÈÄ ¿ÞÂÊ À§¿¡¼ºÎÅÍ °¢ ¼¿ÀÇ Çà°ú ¿¿¡ 0,1,2,3 ÀÇ ¼ýÀÚ¸¦ ºÙÀÔ´Ï´Ù. ±×·± ÈÄ¿¡ °¢ ÄÄÆ÷³ÍÆ®¿¡ À§Ä¡¸¦ ¹èÄ¡Çϰí ÄÄÆ÷³ÍÆ®µéÀÌ ¼öÆòÀ¸·Î ȤÀº ¼öÁ÷À¸·Î ¸î °³ÀÇ ¼¿À» Â÷Áö ÇÏ°Ô µÉ °ÍÀÎÁö ÆÄ¾ÇÀ» ÇØµÓ´Ï´Ù. ¿¹¸¦ µé¾î ¼³¸íÇØº¸°Ú½À´Ï´Ù. ¡®¹Þ´Â »ç¶÷¡¯À̶ó°í ½áÀÖ´Â °ÍÀº Label ÀÔ´Ï´Ù. ±×¸®°í À§Ä¡´Â ¸Ç À§¿¡¼ ¿ÞÂÊ¿¡ ÀÖÀ¸¸ç ¼¿À» Çϳª¸¸ Â÷ÁöÇϰí ÀÖ½À´Ï´Ù. ±×·¡¼ ´ÙÀ½°ú °°ÀÌ ÄÚµùÀÌ µÇ¾îÀÖ½À´Ï´Ù.
n add(new Label("¹Þ´Â »ç¶÷: ", Label.RIGHT), 0, 0, 1, 1);
´Ù¸¥ °ÍµéÀº ¼³¸íÇÏÁö ¾Ê¾Æµµ ¾Æ½Ã°ÚÁö¸¸ µÚ¿¡ ³ª¿À´Â ¼ýÀÚ ³× °³ÀÇ Àǹ̰¡ ±Ã±ÝÇÏ½Ç °Ì´Ï´Ù. óÀ½À¸·Î ³ª¿À´Â 0Àº Á¦ÀÏ ¿ÞÂÊ¿¡ ÀÖ´Â ¼¿À̶õ ¶æÀÔ´Ï´Ù. Áï, XÁÂÇ¥ À§Ä¡¸¦ ÀǹÌÇÕ´Ï´Ù. ±×·¸´Ù¸é ¡°toPerson ÀÇ ½ÃÀÛ¡±ÀÌ ÀÖ´Â ¼¿Àº óÀ½ ¼ýÀÚ°¡ 1ÀÌ µË´Ï´Ù. µÎ¹øÂ° 0Àº À§¿¡¼ºÎÅÍ ¾Æ·¡·Î ³»·Á°¡´Â ¼ø¼¸¦ ³ªÅ¸³À´Ï´Ù. Áï µÎ¹øÂ° 0À̶õ ¼ýÀÚ´Â YÁÂÇ¥À§Ä¡ 0¹øÂ°¸¦ ÀǹÌÇÕ´Ï´Ù. ±×·¸´Ù¸é ¡®Ã·ºÎÆÄÀÏ¡¯À̶ó ½á ÀÖ´Â ¼¿Àº XÁÂÇ¥ 0, YÁÂÇ¥ 2 °¡ µÇ°ÚÁÒ. ´ÙÀ½ ¼¼¹øÂ° ¼ýÀÚ 1Àº ¹«¾ùÀ» ¶æ ÇÒ±î¿ä? ±× °ÍÀº °¡·Î ¹æÇâÀ¸·Î ÇϳªÀÇ ¼¿¸¸ Â÷ÁöÇϰí ÀÖ´Ù´Â ¼Ò¸® ÀÔ´Ï´Ù. ±×·¸´Ù¸é ¹Ù·Î ¿·ÀÇ TextField´Â ³¡±îÁö »ç¿ëµÇ´Ï ¼¼°³ÀÇ ¼¿À» »ç¿ëÇÏ´Â °ÍÀÔ´Ï´Ù. Áï toPerson Àº 1,0,3 ÀÌ µÉ °ÍÀÔ´Ï´Ù. ±×·³ ¸¶Áö¸· ÇϳªÀÇ ¼ýÀÚÀÇ Àǹ̴ ¾Æ½Ç °ÍÀ̶ó »ý°¢ÇÕ´Ï´Ù. ¹Ù·Î ¾Æ·¡·Î ¸î °³ÀÇ ¼¿À» Â÷ÁöÇÏ´Â °¡ ³ªÅ¸³»´Â °Í ÀÔ´Ï´Ù. ÀÌ·¸°Ô ÇØ¼ ¡®Ã£¾Æº¸±â¡¯ ¹öưÀÇ °ª°ú ¡®Send¡¯ ÀÇ °ªÀÌ °áÁ¤³ °ÍÀÔ´Ï´Ù.
n add(new Button("ã¾Æº¸±â"),3,2,1,1);
n add(new Button("Send"), 0, 3, 4, 1);
ÀÌ ¶§ ²À Çà°ú ¿ÀÇ ¹øÈ£°¡ 0ºÎÅÍ ½ÃÀÛÇÑ´Ù´Â °ÍÀ» ±â¾ïÇÏ¼Å¾ß ÇÕ´Ï´Ù.
GridBagLayout¿¡ ´ëÇÏ¿©´Â ¼³¸íÀ» ÇÏ¿´Áö¸¸ GridBagConstraints¿¡ ´ëÇØ¼´Â Áö±Ý ¼³¸íÀ» µå¸®°Ú½À´Ï´Ù. GridBagLayout À» »ç¿ëÇÏ·Á¸é GridBagConstraintsÀ» »ç¿ëÇÏ¿©¾ß ÇÕ´Ï´Ù. ¿Ö³ÄÇϸé, GridBagLayoutÀÌ GridBagConstraints °´Ã¼¸¦ »ý¼ºÇϰí, GridBagConstraints°´Ã¼°¡ GridBagLayout ³»ºÎ¿¡ ÄÄÆ÷³ÍÆ®°¡ ¹èÄ¡µÇ´Â ¹æ¹ýÀ» ÁöÁ¤ÇÕ´Ï´Ù. À§¿¡¼ ³ª¿Ô´ø ³× ÀÚ¸®ÀÇ ¼ýÀÚ°¡ ¹Ù·Î GridBagConstraints °´Ã¼¸¦ ÁöÁ¤ÇÑ ¼ýÀÚÀÔ´Ï´Ù.
GridBagConstraints static»ó¼ö |
GridBagConstraints.gridx, GridBagConstraints.gridy: ÄÄÆ÷³ÍÆ®°¡ À§Ä¡ÇÒ ¼¿ÀÇ x °ª°ú y °ªÀ» ³ªÅ¸³»¸ç, °¡Àå ¿ÞÂÊ À§ ¼¿ÀÇ gridx°ú gridy °ªÀº 0ÀÔ´Ï´Ù. ÄÄÆ÷³ÍÆ®¸¦ ¼ø¼´ë·Î À§Ä¡½Ã۰íÀÚ ÇÒ ¶§´Â GridBagConstraints.RELATIVE¸¦ »ç¿ëÇÕ´Ï´Ù. GridBagConstraints.gridwidth, GridBagConstraints.gridheight: ÄÄÆ÷³ÍÆ®°¡ Â÷ÁöÇÒ ³Êºñ¿Í ³ôÀ̸¦ ³ªÅ¸³»´Â ¼¿ÀÇ °³¼öÀ̸ç, µðÆúÆ® °ªÀº 1ÀÔ´Ï´Ù. gridwidth¸¦ GridBagConstraints.REMAINDER °ªÀ¸·Î ¼³Á¤Çϸé ÇöÀç ÇàÀÇ ¸¶Áö¸· ¼¿À̵ǰí, gridheight ¸¦ GridBagConstraints.REMAINDER °ªÀ¸·Î ¼³Á¤Çϸé ÇöÀç ¿ÀÇ ¸¶Áö¸· ¼¿À̵˴ϴÙ. gridwidth¸¦ GridBagConstraints. RELATIVE °ªÀ¸·Î ¼³Á¤Çϸé ÇöÀç ÇàÀÇ ´ÙÀ½ ¼¿ºÎÅÍ ¸¶Áö¸· ¼¿±îÁö Â÷ÁöÇϰí, gridheight ¸¦ GridBagConstraints. RELATIVE °ªÀ¸·Î ¼³Á¤Çϸé ÇöÀç ¿ÀÇ ´ÙÀ½ ¼¿ºÎÅÍ ¸¶Áö¸· ¼¿±îÁö Â÷ÁöÇϵµ·Ï ÇÕ´Ï´Ù. GridBagConstraints.HORIZONTAL: ¼öÆòÀûÀ¸·Î È®ÀåÇÏ°í ¼öÁ÷ÀûÀ¸·Î´Â È®ÀåÇÏÁö ¾Ê½À´Ï´Ù. GridBagConstraints. VERTICAL: ¼öÁ÷ÀûÀ¸·Î È®ÀåÇÏ°í ¼öÆòÀûÀ¸·Î´Â È®ÀåÇÏÁö ¾Ê½À´Ï´Ù. GridBagConstraints.fill: ÄÄÆ÷³ÍÆ®ÀÇ µð½ºÇ÷¹ÀÌ ¿µ¿ªÀÌ ÄÄÆ÷³ÍÆ®°¡ ¿äûÇÑ Å©±âº¸´Ù Ŭ ¶§, Å©±â¼³Á¤À» ´Ù½Ã ÇÒ °ÍÀΰ¡¸¦ °áÁ¤ÇÕ´Ï´Ù. GridBagConstraints.BOTH: ¼öÆò ¹× ¼öÁ÷À¸·Î È®ÀåÇÕ´Ï´Ù. GridBagConstraints.weightx, GridBagConstraints.weighty: ÄÄÆ÷³ÍÆ®ÀÇ µð½ºÇ÷¹ÀÌ ¿µ¿ªÀÌ ÄÄÆ÷³ÍÆ®°¡ ¿äûÇÑ Å©±âº¸´Ù Ŭ ¶§ ³²´Â ¿µ¿ªÀ» °¢ ÄÄÆ÷³ÍÆ®µé¿¡°Ô ¹èºÐÇØ ÁÖ¾î¾ß Çϴµ¥, ÀÌ ¶§ ÄÄÆ÷³ÍÆ®°¡ Â÷ÁöÇÒ ³Êºñ(weightx)¿Í ³ôÀÌ(weighty)¿¡ ´ëÇÑ ¿þÀÌÆ®(weight)¸¦ ³ªÅ¸³À´Ï´Ù. ÀÌ ³Êºñ¿Í ³ôÀÌ¿¡ ´ëÇÑ ¿þÀÌÆ®´Â °¢ ÄÄÆ÷³ÍÆ®¸¶´Ù ´Þ¸® ÁÙ ¼ö ÀÖ½À´Ï´Ù. ¸¸¾à, ¸ðµç ÄÄÆ÷³ÍÆ®ÀÇ ³Êºñ¿Í ³ôÀÌ¿¡ ´ëÇÑ ¿þÀÌÆ®°¡ 0À̸é, µð½ºÇ÷¹ÀÌ ¿µ¿ªÀÌ Ä¿Áö´õ¶óµµ(»ç¿ëÀÚ°¡ À©µµ¿ìÀÇ Ã¢À» Ű¿ï ¶§) °¢ ÄÄÆ÷³ÍÆ®¿¡ ¹è´çµÇ´Â ¿µ¿ªÀÌ ¾øÀ¸¹Ç·Î ¸ðµç ÄÄÆ÷³ÍÆ®µéÀº Çѱºµ¥ À§Ä¡ÇÏ°Ô µÇ°í ³²´Â ¿µ¿ªÀº ±×³É ºó°ø°£À¸·Î ³ªÅ¸³ª°Ô µË´Ï´Ù |
¾Õ¿¡¼ ¼³¸íÇÑ ´Ù¸¥ Layout º¸´Ù ÈξÀ ´õ º¹ÀâÇÏ°í ¾î·Æ°Ô ´À²¸Áú °ÍÀÔ´Ï´Ù. ÀÌ·¸°Ô ¾î·Á¿î ¹æ¹ýÀ» ¾²´Â ÀÌÀ¯´Â °¢ ÄÄÆ÷³ÍÆ®µéÀÇ ¹èÄ¡¸¦ À¯¿¬ÇÏ°Ô ÇÒ ¼ö ÀÖ°í, ¼·Î ´Ù¸¥ ÆùÆ® Å©±â¿Í ¿î¿µÃ¼Á¦¿¡¼µµ ÄÄÆ÷³ÍÆ® ¹èÄ¡¸¦ ¿øÇÏ´Â ´ë·Î ÇÒ ¼ö ÀÖ´Ù´Â Á¡ ¶§¹® ÀÔ´Ï´Ù. ÇÏÁö¸¸ ¾î·Á¿î ÇÁ·Î±×·¡¹Ö ¶§¹®¿¡ ÀÌ GridBagLayout Àº ÃÖÈÄÀÇ ¼±ÅÃÀ¸·Î »ç¿ëÇÏ´Â °ÍÀÌ ¹Ù¶÷Á÷ÇÕ´Ï´Ù.
jabookÀúÀÚ¸íÇÔ |
Á¦¸ñ:¼Ò¼³°°ÀºÀÚ¹Ù3ºÎ ÀúÀÚ:ÃÖ¿µ°ü |