본문 바로가기

프로그램언어/자바

컨테이너와 배치

컨테이너와 배치

컨테이너에 부작되는 컴포넌트들의 위치와 크기는 컨테이너 내부에 있는 배치관리자에 의해 결정된다.

배치관리자는 컨테이너에 컴포넌트가 부착되는 시점에 컴포넌트의 위치와 크기를 결정한다.

 

배치관리자의  4가지 종류

FlowLayout

왼쪽에서 오른쪽으로 컴포넌트를 배치하며, 오른쪽에 더 이상 배치할 공간이 없으면 아래로 내려와서 다시 왼쪽에서 오른쪽으로 배치한다.


import javax.swing.*;

import java.awt.*;

 

public class FlowLayoutEx extends JFrame {

    public FlowLayoutEx() {

        setTitle("FlowLayout 만들기");

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 프로그램종료

        Container c = getContentPane();

 

        c.setLayout(new FlowLayout(FlowLayout.LEFT, 30, 40)); // 컨텐트팬에FlowLayout 배치관리자설정

        c.add(new JButton("더하기"));

        c.add(new JButton("빼기"));

        c.add(new JButton("곱하기"));

        c.add(new JButton("나누기"));

        c.add(new JButton("결과"));

 

        setSize(350, 200);  // 프레임크기350x200 설정

        setVisible(true);    // 화면에 프레임출력

    }

    public static void main(String[] args) {

        new FlowLayoutEx();

    }

}


실행 결과]

 

 

BorderLayout

컨테이너 공간을 동(EAST), 서(WEST), 남(SOUTH), 북(NORTH), 중앙(CENTER)으로 5개의 영역으로 나누고 지정된 위치에 컴포넌트를 배치한다.


javax.swing.*;

java.awt.*;

 

public class BorderLayoutEx extends JFrame {

 

    public BorderLayoutEx() {

 

        setTitle("보더레이아웃"); // 제목 달기
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 프로그램 종료
        Container c = getContentPane();
        c.setLayout(new BorderLayout(10, 10)); // 컨텐트팬에 BorderLayout 배치관리자 설정

                                                          // 가로 간격 10, 세로 간격 10

        c.add(new JButton("Center"), BorderLayout.CENTER);   // 중앙

        c.add(new JButton("North"), BorderLayout.NORTH);    // 북쪽

        c.add(new JButton("South"), BorderLayout.SOUTH);    // 남쪽

        c.add(new JButton("East"), BorderLayout.EAST);         // 동쪽

        c.add(new JButton("West"), BorderLayout.WEST);       // 서쪽

 

        setSize(300, 200);     // 크기 300×200 설정
        setVisible(true); 
    }


    public static void main(String[] args) {
        new BorderLayoutEx();
    }
}


실행 결과]

 

GridLayout

컨테이너 공간을 동일한 크기로 나누어 격자형태로 컴포넌트를 배치한다.


import javax.swing.*;

 

import java.awt.*;

 

public class GridLayoutEx extends JFrame {

    public GridLayoutEx() {

        setTitle("그리드레이아웃");

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   // 프로그램종료

        GridLayout grid = new GridLayout(4, 2);                 // 4x2 격자의GridLayout 배치관리자생성

        grid.setVgap(5);                //격자사이의수직간격을5 픽셀로설정

 

        Container c = getContentPane();

        c.setLayout(grid);              // grid를컨텐트팬의배치관리자로지정

        c.add(new JLabel(" 학번"));

        c.add(new JTextField(""));

        c.add(new JLabel(" 이름"));

        c.add(new JTextField(""));

        c.add(new JLabel(" 학과"));

        c.add(new JTextField(""));

        c.add(new JLabel(" 과목"));

        c.add(new JTextField(""));

 

        setSize(300, 200);

        setVisible(true);

    }

 

    public static void main(String[] args) {

        new GridLayoutEx();

    }

}


실행 결과]

 

CardLayout

컨테이너 공간에 카드를 쌓아 놓은 듯이 컴포넌트를 포개어 배치한다.


import javax.swing.*;

import java.awt.*;

 

public class NullContainerEx extends JFrame {

    public NullContainerEx() {

        setTitle("카드 레이아웃");

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        Container c = getContentPane();

        c.setLayout(null);       // 컨텐트팬의 배치관리자 제거

 

        // JLabel 컴포넌트 생성하고 위치와 크기를 직접 지정한다.

        JLabel label = new JLabel("버튼 생성하기");

        label.setLocation(130, 30);   // label(130, 30) 위치로 지정

        label.setSize(200, 20);         // label200 x 20 크기로 지정

        c.add(label);                     // label를 컨텐트팬에 부착

 

        // 7개의 버튼 컴포넌트를 생성하고 모두 동일한 크기로 설정한다.

        // 위치는 서로 다르게 설정

        for(int i=1; i<=7; i++) {

            JButton btn = new JButton(Integer.toString(i));

            btn.setLocation(30, 30 * i); // 버튼의 위치 설정

            btn.setSize(70, 30);           // 버튼 크기는 50x20

            c.add(btn);                     // 버튼을 컨텐트팬에 부착

        }

 

        setSize(300, 300);

        setVisible(true);

    }

 

    public static void main(String[] args) {

        new NullContainerEx(); 

    }

}


실행 결과]

'프로그램언어 > 자바' 카테고리의 다른 글

이벤트 처리하기  (0) 2020.11.02
GUI문제1  (0) 2020.11.02
AWT와 스윙(Swing)  (0) 2020.11.01
jsp파일에서 다음 주소검색창 열기  (0) 2020.10.18
톰켓8.5에서 mysql연동하기  (0) 2020.10.04