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
'Programming Study > 명품자바프로그래밍' 카테고리의 다른 글
[명품자바프로그래밍] 10장 실습문제(1) (0) | 2018.10.04 |
---|---|
[명품자바프로그래밍] 9장 Open Challenge (0) | 2018.10.03 |
[명품자바프로그래밍] 8장 Open Challenge (3) | 2018.09.29 |
[명품자바프로그래밍] 8장 실습문제(2) (2) | 2018.09.27 |
[명품자바프로그래밍] 8장 실습문제(1) (0) | 2018.09.27 |
댓글