[명품자바] 9장 예제

sum·2022년 6월 14일
0

예제 9-1 | 300x300 크기의 스윙 프레임 만들기

코드

import javax.swing.*;

public class MyFrame extends JFrame {
    public MyFrame(){
        setTitle("300x300 스윙 프레임 만들기");
        setSize(300,300);
        setVisible(true);
    }

    public static void main(String[] args){
        MyFrame frame = new MyFrame();
    }
}

출력

예제 9-2 | 3개의 버튼 컴포넌트를 가진 스윙 프레임 만들기

다음 그림과 같이 컨텐트팬의 배경색을 오렌지색으로 하고, 이곳에 OK, Cancel, Ignore 버튼들을 부착한 스윙 프로그램을 작성하라.

코드

import javax.swing.*;
import java.awt.*;

public class ContentPaneEx extends JFrame {
    public ContentPaneEx(){
        setTitle("ContentPane과 JFrame");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        Container contentPane = getContentPane();
        contentPane.setBackground(Color.ORANGE);
        contentPane.setLayout(new FlowLayout());

        contentPane.add(new JButton("OK"));
        contentPane.add(new JButton("Cancel"));
        contentPane.add(new JButton("Ignore"));

        setSize(300,150);
        setVisible(true);
    }

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

예제 9-3 | FlowLayout 배치관리자 활용

수평 간격이 30, 수직 간격을 40픽셀로 하고 LEFT로 정렬 배치하는 FlowLayout 배치관리자를 가진 컨텐트팬에 5개의 버튼 컴포넌트를 부착한 스윙 응용프로그램을 작성하라.

코드

import javax.swing.*;
import java.awt.*;

public class FlowLayoutEx extends JFrame {
    public FlowLayoutEx(){
        setTitle("FlowLayout Sample");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Container c = getContentPane();

        c.setLayout(new FlowLayout(FlowLayout.LEFT,30,40));
        c.add(new JButton("add"));
        c.add(new JButton("sub"));
        c.add(new JButton("mul"));
        c.add(new JButton("div"));
        c.add(new JButton("calculate"));

        setSize(300,200);
        setVisible(true);
    }

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

예제 9-4 | BorderLayout 배치관리자를 사용하는 예

BorderLayout 배치관리자를 사용하여 컨텐트팬에 다음과 같이 5개의 버튼 컴포넌트를 삽입하라.

코드

import javax.swing.*;
import java.awt.*;

public class BorderLayoutEx extends JFrame {
    public BorderLayoutEx() {
        setTitle("BorderLayout Sample");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Container c = getContentPane();

        c.setLayout(new BorderLayout(30,20));

        c.add(new JButton("Calculate"), BorderLayout.CENTER);
        c.add(new JButton("add"), BorderLayout.NORTH);
        c.add(new JButton("sub"), BorderLayout.SOUTH);
        c.add(new JButton("div"), BorderLayout.EAST);
        c.add(new JButton("mul"), BorderLayout.WEST);

        setSize(300,200);
        setVisible(true);
    }

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

예제 9-5 | GridLayout으로 입력 폼 만들기

아래 화면과 같이 사용자로부터 입력받는 폼을 스윙 응용프로그램으로 작성하라.
GridLayout을 사용하여 콘텐트팬을 4x2 그리드로 분할하고 JLabel 컴포넌트와 JTextField 컴포넌트를 부착하면 된다. 두 행 사이의 수직 간격은 5픽셀로 하라.

코드

import javax.swing.*;
import java.awt.*;

public class GridLayoutEx extends JFrame {
    public GridLayoutEx() {
        setTitle("GridLayout sample");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        GridLayout grid = new GridLayout(4,2);
        grid.setVgap(5);

        Container c = getContentPane();
        c.setLayout(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();
    }
}

예제 9-6 | 배치관리자 없는 컨테이너에 컴포넌트를 절대 위치와 절대 크기로 지정

다음 그림과 같이 컨텐트팬에 배치관리자를 삭제하고 9개의 버튼과 하나의 문자열을 출력하는 프로그램을 작성하라.
"Hello. Press Buttons!" 문자열은 JLabel 컴포넌트를 이용하고, 그 위치를 (130,50)에, 크기는 200x20으로 한다. 버튼의 크기는 50x20으로 한다.

코드

import javax.swing.*;
import java.awt.*;

public class NullContainerEx extends JFrame {
    public NullContainerEx() {
        setTitle("Null Container Sample");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        Container c = getContentPane();
        c.setLayout(null);

        JLabel la = new JLabel("Hello, Press Buttons!");
        la.setLocation(130,50);
        la.setSize(200,20);
        c.add(la);

        for(int i=1; i<=9; i++){
            JButton b = new JButton(Integer.toString(i));
            b.setLocation(i*15,i*15);
            b.setSize(50,20);
            c.add(b);
        }

        setSize(300,200);
        setVisible(true);
    }

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

0개의 댓글