Question 1.
다음 그림과 같이 "Let's study Java"라는 문자열을 타이틀로 가지고 프레임의 크기가 400 × 200인 스윙 프로그램을 작성하라.
코드
import java.awt.*;
import javax.swing.*;
public class Question1 extends JFrame {
public Question1() {
this.setTitle("Let's study Java");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(400, 200);
this.setVisible(true);
}
public static void main(String[] args) {
new Question1();
}
}
Question 2.
BorderLayout을 사용하여 컴포넌트 사이의 수평 간격이 50픽셀, 수직 간격이 5픽셀이 되도록 다음 그림과 같은 스윙 응용프로그램을 작성하라.
코드
import java.awt.*;
import javax.swing.*;
public class Question2 extends JFrame {
public Question2() {
this.setTitle("BorderLayout Practice");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container c = getContentPane();
c.setLayout(new BorderLayout(50, 20));
c.add(new JButton("North"), BorderLayout.NORTH);
c.add(new JButton("South"), BorderLayout.SOUTH);
c.add(new JButton("West"), BorderLayout.WEST);
c.add(new JButton("East"), BorderLayout.EAST);
c.add(new JButton("Center"), BorderLayout.CENTER);
this.setSize(400, 200);
this.setVisible(true);
}
public static void main(String[] args) {
new Question2();
}
}
Question 3.
컨텐트펜에 FlowLayout 배치관리자를 지정하고 그림과 같이 JLabel과 JButton 컴포넌트를 이용하여 산술문을 출력하는 스윙 프로그램을 작성하라.
코드
import java.awt.*;
import javax.swing.*;
public class Question3 extends JFrame {
public Question3() {
this.setTitle("FlowLayout Practice");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container c = getContentPane();
c.setLayout(new FlowLayout());
c.add(new JLabel("100 + 200"));
c.add(new JButton("="));
c.add(new JLabel("300"));
this.setSize(400, 100);
this.setVisible(true);
}
public static void main(String[] args) {
new Question3();
}
}
Question 4.
예제 8-5의 소스 코드를 수정하여 각 버튼의 배경색을 다음 그림과 같이 설정하라.
코드
import java.awt.*;
import javax.swing.*;
public class Question4 extends JFrame {
public Question4() {
this.setTitle("Ten Color Buttons Frame");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container c = getContentPane();
c.setLayout(new GridLayout(1, 10));
Color [] color = { Color.RED, Color.ORANGE, Color.YELLOW, Color.GREEN, Color.CYAN,
Color.BLUE, Color.MAGENTA, Color.GRAY, Color.PINK, Color.LIGHT_GRAY };
JButton [] btn = new JButton[10];
for(int i = 0; i < 10; i++) {
btn[i] = new JButton(Integer.toString(i));
btn[i].setOpaque(true);
btn[i].setBackground(color[i]);
c.add(btn[i]);
}
this.setSize(500, 250);
this.setVisible(true);
}
public static void main(String[] args) {
new Question4();
}
}
Question 5.
GridLayout을 이용하여 다음 그림과 같이 Color.WHITE, Color.GRAY, Color.RED 등 Color 클래스에 선언된 16개의 색을 배경색으로 하는 4 × 4 판을 구성하라.
코드
import java.awt.*;
import javax.swing.*;
public class Question5 extends JFrame {
public Question5() {
this.setTitle("4x4 Color Frame");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container c = getContentPane();
c.setLayout(new GridLayout(4, 4));
Color [] color = { Color.RED, Color.ORANGE, Color.YELLOW, Color.GREEN, Color.CYAN,
Color.BLUE, Color.MAGENTA, Color.GRAY, Color.PINK, Color.LIGHT_GRAY, Color.BLACK,
Color.DARK_GRAY, Color.WHITE };
JLabel [] label = new JLabel[16];
int randNum = 0;
for(int i = 0; i < 16; i++) {
label[i] = new JLabel(Integer.toString(i));
randNum = (int)(Math.random()*12);
label[i].setOpaque(true);
label[i].setBackground(color[randNum]);
c.add(label[i]);
}
this.setSize(500, 250);
this.setVisible(true);
}
public static void main(String[] args) {
new Question5();
}
}
Question 6.
0~19까지의 정수 20개를 프레임 내의 (30, 30)에서 (250, 250) 영역 내 랜덤한 위치에 출력하는 스윙 프로그램을 작성하라. 프레임의 크기를 300 × 300으로 하고, 정수는 JLabel을 이용하여 출력하고 크기는 20 × 20으로 한다.
코드
import java.awt.*;
import javax.swing.*;
public class Question6 extends JFrame {
public Question6() {
this.setTitle("Random Labels");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container c = getContentPane();
c.setLayout(null);
JLabel [] label = new JLabel[20];
int randNum1 = 0;
int randNum2 = 0;
for(int i = 0; i < 20; i++) {
label[i] = new JLabel(Integer.toString(i));
randNum1 = (int)(Math.random()*220)+30;
randNum2 = (int)(Math.random()*220)+30;
label[i].setBounds(randNum1, randNum2, 20, 20);
label[i].setForeground(Color.MAGENTA);
c.add(label[i]);
}
this.setSize(300, 300);
this.setVisible(true);
}
public static void main(String[] args) {
new Question6();
}
}
Question 7.
Open Challenge의 힌트나 정답을 참고하여 컨텐트펜에 3개의 패널을 부착한 프로그램을 작성하라. CenterPanel에는 10개의 JLabel을 이용하여 10개의 '*'를 랜덤한 위치에 출력하라.
코드
import java.awt.*;
import javax.swing.*;
public class Question7 extends JFrame {
public Question7() {
this.setTitle("3개의 패널을 가진 프레임");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container c = getContentPane();
c.setLayout(new BorderLayout());
JPanel NorthPanel = new JPanel();
JPanel CenterPanel = new JPanel();
JPanel SouthPanel = new JPanel();
c.add(NorthPanel, BorderLayout.NORTH);
c.add(CenterPanel, BorderLayout.CENTER);
c.add(SouthPanel, BorderLayout.SOUTH);
NorthPanel.setBackground(Color.YELLOW);
NorthPanel.setLayout(new FlowLayout());
NorthPanel.add(new JButton("새로 배치"));
NorthPanel.add(new JButton("종료"));
CenterPanel.setLayout(null);
JLabel [] label = new JLabel[10];
int randNum1 = 0;
int randNum2 = 0;
for(int i = 0; i < 10; i++) {
label[i] = new JLabel("*");
randNum1 = (int)(Math.random()*200)+50;
randNum2 = (int)(Math.random()*150)+50;
label[i].setBounds(randNum1, randNum2, 20, 20);
label[i].setForeground(Color.RED);
c.add(label[i]);
}
SouthPanel.setBackground(Color.LIGHT_GRAY);
SouthPanel.setLayout(new FlowLayout(FlowLayout.LEFT));
SouthPanel.add(new JButton("별 개수 수정"));
SouthPanel.add(new JTextField(15));
this.setSize(300, 300);
this.setVisible(true);
}
public static void main(String[] args) {
new Question7();
}
}
'☕ Java > 명품 자바 에센셜' 카테고리의 다른 글
명품 자바 에센셜 10장 실습 문제 (0) | 2019.05.21 |
---|---|
명품 자바 에센셜 9장 실습 문제 (0) | 2019.05.14 |
명품 자바 에센셜 7장 실습 문제 (0) | 2019.05.12 |
명품 자바 에센셜 6장 실습 문제 (0) | 2019.05.11 |
명품 자바 에센셜 5장 실습 문제 (0) | 2019.05.10 |