¼Ò¼³°°ÀºÀÚ¹Ù3ºÎ  13Àå AWT  13.7 LayoutManager  

 

13.7 LayoutManager

 

 ÀÌ·± Àǹ®À» °¡Á® º¸½Å ºÐÀº ¾ø´ÂÁö¿ä. ¾î¶»°Ô ÄÄÆ÷³ÍÆ®µéÀ» Frame¿¡ ¹èÄ¡ÇÒ ¼ö ÀÖÀ»±î? ´ç¿¬È÷ ±×³ÉÀº ¾Æ´Õ´Ï´Ù. ¾î¶² ±ÔÄ¢¿¡ ÀÇÇØ¼­ ÄÄÆ÷³ÍÆ®¸¦ ContainerÄÄÆ÷³ÍÆ® ³»·Î »ðÀÔÇÕ´Ï´Ù. ¹èÄ¡¿Í °ü·ÃµÈ »çÇ×µéÀ» °ü¸®ÇÏ´Â °ÍÀÌ ¹Ù·Î LayoutManagerÀÔ´Ï´Ù. ÀÚ¹Ù¿¡¼­ »ç¿ëÇÏ´Â LayoutManager´Â ´ÙÀ½°ú °°½À´Ï´Ù.

 

n        BorderLayout

n        FlowLayout

n        GridLayout

n        CardLayout

n        GridBagLayout

 

13.2Àý¿¡¼­ »ç¿ëÇÑ LayoutÀº FlowLayoutÀ̶ó´Â °ÍÀ» ÀÌ¹Ì ¾Ë°í °è½ÃÁÒ. À̵é LayoutÀ» ÇÁ·Î±×·¥ÀûÀ¸·Î ÇϳªÇϳª ¾Ë¾Æº¸°í ±×¸®°í °¢°¢ÀÇ ÄÄÆ÷³ÍÆ®¸¦ ´Ù·ç´Â ¹æ¹ý¿¡ ´ëÇØ¼­ ¾Ë¾Æ º¸µµ·Ï ÇϰڽÀ´Ï´Ù. ¸ÕÀú BorderLayoutºÎÅÍ ¾Ë¾Æ º¸µµ·Ï ÇϰڽÀ´Ï´Ù.

 

 

13.7.1 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¸¦ »ç¿ëÇϼŵµ µË´Ï´Ù.

 

 

13.7.2 FlowLayout

 

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Å©±â¿¡ µû¶ó¼­ ÀÚµ¿À¸·Î ±× »ðÀÔÀ§Ä¡°¡ È帧¿¡ µû¶ó ¹Ù²îµµ·Ï µÇ¾î ÀÖ½À´Ï´Ù.

 

 

ÀÌ ±×¸²µéÀº »çÀÌÁî¿¡ µû¶ó¼­ ÄÄÆ÷³ÍÆ®°¡ º¯°æµÇ´Â °ÍÀ» º¸¿© ÁÖ°í ÀÖ½À´Ï´Ù.

 

 

13.7.3 GridLayout

 

±×¸®µå ·¹À̾ƿô °ü¸®ÀÚ´Â ÄÁÅ×À̳ÊÀÇ ¿µ¿ªÀ» ÁÖ¾îÁø Çà°ú ¿­ Å©±âÀÇ ¼¿µé·Î ³ª´©°í µ¿µîÇÑ Å©±âÀÇ °¢ ¼¿¿¡ ÄÄÆ÷³ÍÆ®¸¦ Çϳª¾¿ À§Ä¡½ÃŰ¹Ç·Î ¸ðµç ÄÄÆ÷³ÍÆ®ÀÇ Å©±â´Â µ¿ÀÏÇÏ°Ô µË´Ï´Ù. ±×¸®µå ·¹À̾ƿô °ü¸®ÀÚ´Â ¼¿ ´ÜÀ§ÀÇ ·¹À̾ƿôÀ» ¼öÇàÇϰí ÀÌ·¯ÇÑ ¼¿À» »ç°¢Çü ±×¸®µå(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¿¡ µû¶ó¼­ Â÷·Ê´ë·Î »ðÀԵǾîÁý´Ï´Ù.

 

 

13.7.4 CardLayout

 

Ä«µå ·¹À̾ƿô ¸Å´ÏÀú´Â ¿©·¯ ÀåÀÇ Ä«µå¸¦ °ãÃÄ ¹èÄ¡ÇÏ´Â ½ÄÀ¸·Î °ü¸®Çϰí, ÄÁÅ×À̳ʰ¡ Æ÷ÇÔÇϰí ÀÖ´Â ÄÄÆ÷³ÍÆ®µéÀ» ÇÑ ÀåÀÇ Ä«µåó·³ ´Ù·ç¾î, ÇÑ ¹ø¿¡ ÇÑ À徿 »ç¿ëÀÚ°¡ º¸±â¸¦ ¿øÇÏ´Â Ä«µå¸¦ º¸¿©ÁÖ´Â °ÍÀÔ´Ï´Ù. ÀÌ·¸°Ô ÀÌ Å¬·¡½º´Â ¿©·¯ °³ÀÇ ·¹À̾ƿôÀ» ÀúÀåÇÑ´Ù´Â Á¡¿¡¼­ ´Ù¸¥ ·¹À̾ƿô ¸Å´ÏÀúµé°ú ¾à°£ ´Ù¸¨´Ï´Ù. ÀÌ·¯ÇÑ Çü½ÄÀÇ ·¹À̾ƿô ¸Å´ÏÀú´Â »ç¿ëÀÚÀÇ ¿É¼ÇÀ» ÀԷ¹ޱâ À§ÇØ À©µµ¿ì¿¡¼­ ¸¹ÀÌ »ç¿ëµÇ¾îÁý´Ï´Ù.

 

´ÙÀ½ÀÇ ¿¹Á¦´Â ¼¼ °³ÀÇ ÄÄÆ÷³ÍÆ®¸¦ ÇÁ·¹ÀÓ¿¡ Ãß°¡ÇÏ¿©, À̸¦ Ä«µå ·¹À̾ƿô °ü¸®ÀÚ¸¦ ÀÌ¿ëÇÏ¿© °ü¸®Çϰí ÀÖ½À´Ï´Ù. µû¶ó¼­, ¼¼ ÀåÀÇ Ä«µå¸¦ °¡Áö°í ÀÖ´Ù°í º¼ ¼ö ÀÖ½À´Ï´Ù.

 ±× Áß Ã¹¹øÂ° ÄÄÆ÷³ÍÆ®´Â ÆÐ³Î°´Ã¼¸¦ »ý¼ºÇÏ¿© 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):ÁÖ¾îÁø ÄÄÆ÷³ÍÆ®¸¦ Ä«µå ·¹À̾ƿô °ü¸®ÀÚÀÇ ³»ºÎ À̸§ Å×ÀÌºí¿¡ »ðÀÔÇÕ´Ï´Ù

 

 

 

13.7.5 GridbagLayout

 

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ºÎ
ÀúÀÚ:ÃÖ¿µ°ü