히치키치

[명품 자바 에센셜] 실습문제 8장 본문

명품 자바 에센셜

[명품 자바 에센셜] 실습문제 8장

히치키치 2021. 9. 1. 00:40

1번

import javax.swing.*;

public class one extends JFrame {
    public one() {
        setTitle("Lest's study Java");
        setSize(400,200);
        setVisible(true);
    }
    public static void main(String[] args) {
        new one();
    }

}

2번


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

public class two extends JFrame{
    public two() {
        //프레임 타이틀
        setTitle("BorderLayout");
        //프레임 종료 기능
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        //컨테인 팬 하나 받아오기
        Container contentPane=getContentPane();

        //컨탠트 팬에 배치 관리자 배정(hGap,vGap)
        contentPane.setLayout(new BorderLayout(50,5));
        //컨텐트 팬에 버튼 추가 & 배열
        contentPane.add(new JButton("North"),BorderLayout.NORTH);
        contentPane.add(new JButton("Center"),BorderLayout.CENTER);
        contentPane.add(new JButton("South"),BorderLayout.SOUTH);
        contentPane.add(new JButton("East"),BorderLayout.EAST);
        contentPane.add(new JButton("West"),BorderLayout.WEST);

        //프레임 사이즈
        setSize(400,200);
        setVisible(true);

    }

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

}

3번


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

public class three extends JFrame {

    public three() {
        //프레임 타이틀 설정
        setTitle("FlowLayout");
        //프레임 종료 설정
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        //컨텐트팬 생성
        Container container=getContentPane();

        //컨텐트팬 배치관리자 설정
        container.setLayout(new FlowLayout());


        //배치관리자에 JLabel과 JButton 올려
        container.add(new JLabel("100+200"));
        container.add(new JButton("="));
        container.add(new JLabel("300"));

        //프레임 사이즈 설정
        setSize(400,100);
        //프레임 보이게!!
        setVisible(true);

    }

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

4번



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

public class four extends JFrame {

    public four(){
        //프레임 타이틀 설정
        setTitle("Ten Color Button Frame");
        //프레임 종료 설정
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        //컨텐트팬 설정
        Container container=getContentPane();
        //컨텐트팬 배치 관리자 생성
        container.setLayout(new GridLayout(1,10));
        //컨텐트팬 위에 올린 버튼 색상 배열
        Color [] color= {Color.RED,Color.ORANGE,Color.GREEN,
                Color.CYAN,Color.BLUE,Color.MAGENTA,
                Color.GRAY,Color.DARK_GRAY,
                Color.PINK,Color.LIGHT_GRAY};

        //컨텐트 팬에 JButton 올리는 반복문
        for(int i=0;i<10;i++) {
            //JButton 생성 & 버튼에 번호 부여
            JButton button=new JButton(Integer.toString(i));
            //버튼 눈에 보이게!! 불투명해보이게!!
            button.setOpaque(true);
            //버튼 배경색 설정 : 버튼 색상 배열 순차적으로 돌며
            button.setBackground(color[i]);
            //button 설정 다 한거 컨텐트팬에 부착
            container.add(button);

        }


        setSize(500,200);
        setVisible(true);


    }

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

}

5번


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


public class five extends JFrame{

    public five() {
        setTitle("4x4 Color Frame");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


        Container container=getContentPane();
        container.setLayout(new GridLayout(4,4));


        Color[] color= {Color.RED,Color.ORANGE,Color.YELLOW,Color.GREEN,
            Color.CYAN,Color.BLUE,Color.MAGENTA,Color.DARK_GRAY,
            Color.PINK, Color.GRAY,Color.WHITE,Color.BLACK,
            Color.BLACK,Color.ORANGE,Color.BLUE,Color.MAGENTA};

        for(int i=0;i<16;i++) {
            JLabel label=new JLabel(Integer.toString(i));
            label.setBackground(color[i]);
            label.setOpaque(true);
            container.add(label);
        }

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

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

    }
}

6번


import javax.swing.*;
import java.awt.*;
public class six extends JFrame{

    public six() {
        setTitle("Random Labels");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Container container=getContentPane();

        for(int i=0;i<19;i++) {
            JLabel label=new JLabel(Integer.toString(i));
            int x=(int)(Math.random()*220+30);//30~250 사이 랜덤 x
            int y=(int)(Math.random()*220+30);//30~250 사이 랜덤 y
            label.setSize(20,20);
            /* label.setLayout(null) : Default로 설정되어있던 배치관리자 삭제하고 : 필요없음 
             배치관리자가 default로 배정되는 것은 컨테이너/패널 같이 담는 것들,,,,*/
            //내가 직접 컴포넌트의 절대 위치 설정
            label.setLocation(x, y);
            label.setForeground(Color.MAGENTA);

            container.add(label);
        }

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

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

}

7번



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

public class seven extends JFrame {

    public seven() {

        //JFrame 생성자를 호출해 타이틀 설정
        super("3개의 패널을 가진 프로그램");
        //프레임 종료
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //컨텐트팬 생성
        Container container=getContentPane();
        //북 중앙 남쪽에 패널 패치하기 위해 BorderLayout 배치 관리자 생성
        container.setLayout(new BorderLayout());


        //첫번째 패널 생성 : p1 : 상단
        JPanel p1=new JPanel();
        //p1 배경색 : Yellow
        p1.setBackground(Color.YELLOW);
        //FlowLayout는 FLowLayout.CENTER를 Default로 중앙 기준 차례로 정렬 진행 
        p1.setLayout(new FlowLayout());
        p1.add(new JButton("새로 배치")); //p1 위 첫번째 버튼
        p1.add(new JButton("종료"));//p1 위 두번째 버튼
        //p1 설정 다 하고 컨텐트펜 북쪽에 부착
        container.add(p1,BorderLayout.NORTH);

        //두번째 패널 생성 : p2 : 중앙
        JPanel p2=new JPanel();

        /*p2에 담길 JLabel의 위치를 직접 설정 할 것임 
        p2는 panel로 default로 배정되는 배치관리자 삭제
        이거 없으면 상단의 중앙에 나란히 차례로 ****** 출력됨*/
        p2.setLayout(null);

        // * 10개 랜덤 위치 생성
        for(int i=0;i<10;i++) {
            JLabel label=new JLabel("*"); //* 생성
            /* label.setLayout(null) : 필요없음
             배치관리자가 default로 배정되는 것은 컨테이너/패널 같이 담는 것들,,,,
             */
            int x=(int)(Math.random()*200)+50;//50~250 사이 x좌표
            int y=(int)(Math.random()*150)+50;//50~200 사이 y좌표
            label.setForeground(Color.MAGENTA);
            label.setOpaque(true);
            label.setLocation(x, y);
            label.setSize(20,20);
            /*컴포넌트 절대 위치 정하기 : setBounds(위치 가로, 위치 세로, 폭, 높이)
              label.setBounds(x, y, 20, 20);로 
                 setLocation(x,y)와 setSize(20,20)를 한 번에 표현 */
            p2.add(label); // 패널에 * label올려
        }
        //p2를 컨텐트팬 중앙으로 배치/추가
        container.add(p2,BorderLayout.CENTER); 

        //두번째 패널 생성 : p3 : 중앙
        JPanel p3=new JPanel();
        p3.setLayout(new FlowLayout()); //중앙을 기준으로 차례로 버튼 배치

        p3.add(new JButton("별 갯수 수정")); //버튼 추가
        /*p3.add(new JButton("별 갯수 수정").FlowLayout.Left) 
             : 왼쪽에 배치한다는 소리가 아님..
         p3.setLayout(new FlowLayout(FlowLayout.LEFT,30,40))
             : 정렬기준, hGap, VGap 인자로 받아서 배치 관리
         */
        p3.setBackground(Color.LIGHT_GRAY); //패널 배경색 지정

        p3.add(new JTextField(15));//텍스트 입력칸 추가

        //버튼이랑 텍스트입력칸 추가된 패널를 컨텐트 팬에 남쪽에 배치/추가
        container.add(p3,BorderLayout.SOUTH); 

        //프레임 사이즈
        setSize(300,300);
        //프레임 보이기
        setVisible(true);
    }


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

}

Comments