본문 바로가기
Programming Study/명품자바프로그래밍

[명품자바프로그래밍] 9장 실습문제

by 푸고배 2018. 9. 30.

1. 다음 그림과 같이 "Let's Study Java"라는 문자열을 타이틀로 가지고 프레임의 크기가 400*200인 스윙 프로그램을 작성하라.

<소스코드> Chapter9_1.java

package Chapter9;
import javax.swing.*;
//1번
//다음 그림과 같이 "Let`s study Java"라는 문자열을 타이틀로 가지고 프레임의 크기가 400*200인 스윙 프로그램을 작성하라.
public class Chapter9_1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		JFrame f = new JFrame();
		f.setTitle("Let`s study Java");
		f.setSize(400, 200);
		f.setVisible(true);
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}

}

 

2. BorderLayout을 사용하여 컴포넌트 사이의 수평 간격이 5픽셀, 수직 간격이 7픽셀이되도록 다음 그림과 같은 스윙 응용프로그램을 작성하라.

 

<소스코드>Chapter9_2.java

package Chapter9;
//2번
//BorderLayout을 사용하여 컴포넌트 사이의 수평 간격이 5픽셀, 
//수직 간격이 7픽셀이 되도록 다음 그림과 같은 스윙 응용프로그램을 작성하라.

import java.awt.BorderLayout;
import java.awt.Container;

import javax.swing.JButton;
import javax.swing.JFrame;

public class Chapter9_2 extends JFrame{
	public Chapter9_2(){
		setTitle("BorderLayout Practice");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		Container c = getContentPane();
		c.setLayout(new BorderLayout(5,7)); // ContentPane에 BorderLayout 배치관리자 지정
		
		c.add(new JButton("West"), BorderLayout.WEST);
		c.add(new JButton("North"), BorderLayout.NORTH);
		c.add(new JButton("Center"), BorderLayout.CENTER);
		c.add(new JButton("East"), BorderLayout.EAST);
		c.add(new JButton("South"), BorderLayout.SOUTH);
		setSize(600,400);
		setVisible(true);
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new Chapter9_2();
	}
}

 

3. GridLayout을 사용하여 다음 그림과 같이 한 줄에 10개의 버튼을 동일한 크기로 배치하는 스윙 프로그램을 작성하라.

<소스코드> Chapter9_3.java

package Chapter9;
//3번
//GridLayout을 사용하여 다음 그림과 같이 한 줄에 10개의 버튼을 동일한 크기로 배치하는 스윙프로그램을 작성하라.
import java.awt.*;
import javax.swing.*;

public class Chapter9_3 extends JFrame{

	Chapter9_3(){
		setTitle("Ten Buttons Frame");
		setVisible(true);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		Container c = getContentPane();
		c.setLayout(new GridLayout(1,10));
		for(int i=0;i<10;i++){
			c.add(new JButton(i+""));
		}
		setSize(700,300);
		
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new Chapter9_3();
	}

}

 

4. 문제 3을 수정하여 다음 결과와 같이 각 버튼의 배경색을 서로 다르게 설정하라.

- 힌트 컴포넌트의 배경색을 노란색으로 설정하려면 comp.setBackground(Color.YELLOW);로 하면 된다.

 

<소스코드> Chapter9_4.java

package Chapter9;
//4번
//문제 3을 수정하여 다음 결과와 같이 각 버튼의 배경색을 서로 다르게 설정하라.
import java.awt.Color;
import java.awt.Container;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;

public class Chapter9_4 extends JFrame{
	Color colorArr[] = {Color.RED, Color.ORANGE, Color.YELLOW, Color.GREEN,
			Color.blue,new Color(330066), new Color(660066), Color.DARK_GRAY,
			Color.pink, Color.GRAY }; 
	Chapter9_4(){
		setTitle("Ten Color Buttons Frame");
		setVisible(true);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		Container c = getContentPane();
		c.setLayout(new GridLayout(1,10));
		for(int i=0;i<10;i++){
			JButton btn = new JButton(i+"");
			btn.setBackground(colorArr[i]);
			c.add(btn);
		}
		setSize(700,300);
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new Chapter9_4();
	}
}

 

5. GridLayout을 이용하여 다음 그림과 같이 Color.WHITE, Color.GRAY, Color.RED 등 16개의 색을 배경으로 하는 4*4 바둑판을 구성하라.

- 16개의 JLabel 컴포넌트를 생성하고 각 레이블 컴포넌트의 배경색을 칠한 다음 하나씩 GridLayout을 가진 컨테이너에 붙이면 된다.

<소스코드> Chapter9_5.java

package Chapter9;
//5번
//GrideLayout을 이용하여 다음 그림과 같이 Color.WHITE, Color.GRAY, Color.RED 등
//16개의 색을 배경으로 하는 4*4 바둑판을 구성하라.

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

public class Chapter9_5 extends JFrame{
	Color colorArr[] = {Color.RED, Color.ORANGE, Color.YELLOW, Color.GREEN,
			Color.blue,new Color(330066), new Color(660066), new Color(999999),
			Color.pink, Color.GRAY, Color.white, Color.DARK_GRAY, Color.black,
			Color.ORANGE, new Color(330066), new Color(660066)}; 
	Chapter9_5(){
		setTitle("4*4 Color Frame");
		setVisible(true);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		Container c = getContentPane();
		c.setLayout(new GridLayout(4,4));
		for(int i=0;i<16;i++){
			JLabel lab = new JLabel(i+"");
			lab.setBackground(colorArr[i]);
			lab.setOpaque(true);
			c.add(lab);
		}
		setSize(700,300);
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new Chapter9_5();
	}

}

 

6. 20개의 10*10 크기의 JLabel 컴포넌트가 프레임 내의 (50, 50)위치에서 (250, 250)내의 영역에서 랜덤한 위치에 출력되도록 스윙 프로그램을 작성하라. 프레임의 크기를 300*300으로 하고, JLabel의 배경색은 모두 파란색으로 하라.

- int x = (int)(Math.random()*200) + 50; //50-250

- int y = (int)(Math.random()*200) + 50; // 50-250

- label.setLocation(x,y); // label을 (x,y)에 배치

- label.setSize(10, 10); // label 크기를 10*10으로 설정

- label.setOpque(true); // label에 배경색이 보이게 함

 

<소스코드> Chapter9_6.java

package Chapter9;
//6번
//20개의 10*10 크기의 JLavel 컴포넌트가 프레임 내의 (50, 50)위치에서 (250, 250)
//내의 영역에서 랜덤한 위치에 출력되도록 스윙 프로그램을 작성하라.
//프레임의 크기를 300*300으로 하고, JLabel의 배경색은 모두 파란색으로 하라.
import java.awt.*;
import javax.swing.*;

public class Chapter9_6 extends JFrame {
	Chapter9_6(){
		setTitle("Random Labels");
		setVisible(true);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		Container c = getContentPane();
		c.setLayout(null);
		for(int i=0;i<20;i++){
			JLabel label = new JLabel();
			int x = (int)(Math.random()*200)+50; // 50~250
			int y = (int)(Math.random()*200)+50; // 50~250
			label.setLocation(x,y); // label을 (x,y)에 배치
			label.setBackground(Color.BLUE);
			label.setSize(10,10); // label 크기를 10*10으로 설정
			c.add(label);
			label.setOpaque(true); // label에 배경색이 보이게 함
		}
		setSize(300,300);
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new Chapter9_6();
	}

}

참고자료 : 생능출판 명품 JAVA Programming

github 주소 : 

https://github.com/ch1517/Masterwork-JAVA-Programming/tree/master/Chapter9/src/Chapter9

반응형

댓글