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

히치키치·2021년 6월 5일
0

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();
	}

}

0개의 댓글