- 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 |