본문 바로가기

미래(2015-2016)/자습

GridBagLayout

- GridLayout에서 더 발전된 형태로 무조건 n등분한 공간을 차지하는 GridLayout과 달리 한 컴포넌트가 

  n등분한 공간 중 더 많은 공간을 차지할 수 있다.


import java.awt.*;
import java.awt.event.*;

public class UseGridBagLayout extends Frame
{
    GridBagConstraints gbc;
    Button[] buttons;
    
    public UseGridBagLayout()
    {
        super("GridLayoutTest");
        setSize(300, 300);
        setLayout(new GridBagLayout());
        
        // GridBagLayout은 GridBagConstraints 클래스에 저장된 제약에 따라 컴포넌트를 배치한다.
        gbc = new GridBagConstraints();
        buttons = new Button[4];
        
        for (int i = 0; i < buttons.length; i++)
        {
            buttons[i] = new Button("버튼" + (i + 1));
        }
        
        addButton(buttons[0], 0, 0, 1, 1);
        addButton(buttons[1], 1, 0, 1, 1);
        addButton(buttons[2], 0, 1, 2, 1);
        addButton(buttons[3], 2, 0, 1, 2);
        
        setVisible(true);
        
        addWindowListener(new WindowAdapter()
        {
            public void windowClosing(WindowEvent we)
            {
                System.exit(0);
            }
        });
        
    }
    
    void addButton(Component c, int x, int  y, int width, int height)
    {
        // 컴포넌트를 각 Grid 구역에서 확장하는 방식 (NONE, HORIZONTAL, VERTICAL, BOTH)
        gbc.fill = GridBagConstraints.BOTH;     // 확장할 때 수평, 수직 모두 확장한다.
        gbc.gridx = x;                              // x 좌표
        gbc.gridy = y;                              // y 좌표
        gbc.gridwidth = width;                      // 해당 컴포넌트가 차지할 너비 
        gbc.gridheight = height;                    // 해당 컴포넌트가 찾이할 높이
        gbc.weightx = 1.0;                          // 여백을 분배하는 변수. 0일 경우 가운데로 수렴한다.
        gbc.weighty = 1.0;
        add(c, gbc);                                    // 해당 컴포넌트를 Layout 제약에 따라 frame에 추가
    }
    
    public static void main(String[] args)
    {
        UseGridBagLayout ugbl = new UseGridBagLayout();
    }
}



addButton 메소드의 gbc.weightx를 0으로 줬을 때



addButton 메소드의 gbc.weighty를 0으로 줬을 때



addButton 메소드의 gbc.weightx와 gbc.weighty 모두 0일 때



'미래(2015-2016) > 자습' 카테고리의 다른 글

JTable, DefaultTableModel  (0) 2015.11.02
DefaultListModel  (0) 2015.11.02
계산기 외형만 구현하기  (0) 2015.10.27
Dimension  (0) 2015.10.27
Toolkit  (0) 2015.10.26