1. 그림과 같이 만든다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
package day18quiz;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import day16quiz.Lotto;
public class Day18Q02 extends JFrame implements ActionListener {
JButton[] jbtn;
JButton jbtnStart;
ImageIcon imgq;
ImageIcon[] img; // 이미지 아이콘 배열
Day18Q02(){
setLayout(null); // 배치관리자 커스텀
imgq = new ImageIcon("src/images/q2.jpg");
img = new ImageIcon[45]; // 이미지 아이콘 배열
jbtn = new JButton[6]; // 로또 숫자 버튼 6칸
Font f = new Font("굴림체", Font.PLAIN, 30); // 폰트 수정
// 이미지 객체 생성
for(int i=0; i<jbtn.length; i++) {
img[i] = new ImageIcon("src/images/ball"+(i+1)+".png"); // 이미지 경로 > 배치
}
// 버튼 객체 생성
for(int i=0; i<jbtn.length; i++) {
jbtn[i] = new JButton();
jbtn[i].setBounds(100+(i*100), 100, 100, 80); // 컴포넌트 크기
jbtn[i].setIcon(imgq); // 물음표 이미지(q) 부착
jbtn[i].setFont(f); // 폰트 수정
add(jbtn[i]); // 부착
}
// 스타트 버튼
jbtnStart = new JButton("인생은 한 방!");
// 이벤트 처리 > implements ActionListener, 추상화 추가
jbtnStart.addActionListener(this);
jbtnStart.setBounds(150, 350, 450, 40);
add(jbtnStart);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setBounds(100, 100, 800, 600);
setVisible(true);
}
public static void main(String[] args) {
Day18Q02 d = new Day18Q02();
}
@Override
public void actionPerformed(ActionEvent e) {
// System.out.println("버튼 눌림");
Lotto lt = new Lotto(); // 로또 번호 담기
// System.out.println(Arrays.toString(lt.num));
for(int i=0; i<jbtn.length; i++) {
jbtn[i].setLabel(""+lt.num[i]);
}
// btn1.setLabel(""+lt.num[0]); // ""+숫자 = 문자
// btn2.setLabel(""+lt.num[1]);
// btn3.setLabel(""+lt.num[2]);
// btn4.setLabel(""+lt.num[3]);
// btn5.setLabel(""+lt.num[4]);
// btn6.setLabel(""+lt.num[5]);
}
}
|
cs |
2. 클릭하면 로또 번호에 해당하는 이미지로 출력
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
package day18quiz;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import day16quiz.Lotto;
public class Day18Q03 extends JFrame implements ActionListener {
JButton[] jbtn;
JButton jbtnStart;
ImageIcon imgq;
ImageIcon[] img; // 이미지 아이콘 배열
Day18Q03(){
setLayout(null); // 배치관리자 커스텀
imgq = new ImageIcon("src/images/q2.jpg");
img = new ImageIcon[45]; // 이미지 아이콘 배열
jbtn = new JButton[6]; // 로또 숫자 버튼 6칸
Font f = new Font("굴림체", Font.PLAIN, 30); // 폰트 수정
// 이미지 객체 생성
for(int i=0; i<img.length; i++) {
img[i] = new ImageIcon("src/images/ball"+(i+1)+".png"); // 이미지 경로 > 배치
}
// 버튼 객체 생성
for(int i=0; i<jbtn.length; i++) {
jbtn[i] = new JButton();
jbtn[i].setBounds(100+(i*100), 100, 100, 80); // 컴포넌트 크기
jbtn[i].setIcon(imgq); // 물음표 이미지(q) 부착
jbtn[i].setFont(f); // 폰트 수정
add(jbtn[i]); // 부착
}
// 스타트 버튼
jbtnStart = new JButton("인생은 한 방!");
// 이벤트 처리 > implements ActionListener, 추상화 추가
jbtnStart.addActionListener(this);
jbtnStart.setBounds(150, 350, 450, 40);
add(jbtnStart);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setBounds(100, 100, 800, 600);
setVisible(true);
}
public static void main(String[] args) {
Day18Q03 d = new Day18Q03();
}
@Override
public void actionPerformed(ActionEvent e) {
// System.out.println("버튼 눌림");
Lotto lt = new Lotto(); // 로또 번호 담기
// System.out.println(Arrays.toString(lt.num));
for(int i=0; i<jbtn.length; i++) {
jbtn[i].setIcon(img[lt.num[i]-1]); // 로또 이미지 부착
System.out.print((lt.num[i]+"\t"));
}
System.out.println();
// btn1.setLabel(""+lt.num[0]); // ""+숫자 = 문자
// btn2.setLabel(""+lt.num[1]);
// btn3.setLabel(""+lt.num[2]);
// btn4.setLabel(""+lt.num[3]);
// btn5.setLabel(""+lt.num[4]);
// btn6.setLabel(""+lt.num[5]);
}
}
|
cs |
3. 버튼을 클릭하면 랜덤하게 이미지를 출력하다가 마지막에 최종적으로 로또번호 이미지가 출력
- Multi Thread를 위한 ball 클래스
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
package day18quiz;
// 멀티스레드로 gui 버튼 처리
import java.util.Random;
import javax.swing.ImageIcon;
import javax.swing.JButton;
public class Ball extends Thread { // 멀티 스레드 : 스레드 상속
JButton jbtn;
ImageIcon[] img;
int no; // 로또번호
public Ball(JButton jbtn, ImageIcon[] img, int no) {
// 멤버변수 초기화(전달 받아 참조)
this.jbtn = jbtn;
this.img = img;
this.no = no;
}
@Override
public void run() {
// 랜덤하게 몇 개의 이미지를 출력
Random rnd = new Random();
for(int i=0; i<20; i++) {
jbtn.setIcon(img[rnd.nextInt(45)]); // 랜덤하게 뽑은 이미지를 셋
try {
Thread.sleep(50); // 천천히 섞이도록.. > try, catch 삽입(예외 처리)
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// 최종 번호로 로또 번호를 지정
jbtn.setIcon(img[no-1]);
}
}
|
cs |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
package day18quiz;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import day16quiz.Lotto;
public class Day18Q04 extends JFrame implements ActionListener {
JButton[] jbtn;
JButton jbtnStart;
ImageIcon imgq;
ImageIcon[] img; // 이미지 아이콘 배열
Day18Q04(){
setLayout(null); // 배치관리자 커스텀
imgq = new ImageIcon("src/images/q2.jpg");
img = new ImageIcon[45]; // 이미지 아이콘 배열
jbtn = new JButton[6]; // 로또 숫자 버튼 6칸
Font f = new Font("굴림체", Font.PLAIN, 30); // 폰트 수정
// 이미지 객체 생성
for(int i=0; i<img.length; i++) {
img[i] = new ImageIcon("src/images/ball"+(i+1)+".png"); // 이미지 경로 > 배치
}
// 버튼 객체 생성
for(int i=0; i<jbtn.length; i++) {
jbtn[i] = new JButton();
jbtn[i].setBounds(100+(i*100), 100, 100, 80); // 컴포넌트 크기
jbtn[i].setIcon(imgq); // 물음표 이미지(q) 부착
jbtn[i].setFont(f); // 폰트 수정
add(jbtn[i]); // 부착
}
// 스타트 버튼
jbtnStart = new JButton("인생은 한 방!");
// 이벤트 처리 > implements ActionListener, 추상화 추가
jbtnStart.addActionListener(this);
jbtnStart.setBounds(150, 350, 450, 40);
add(jbtnStart);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setBounds(100, 100, 800, 600);
setVisible(true);
}
public static void main(String[] args) {
Day18Q04 d = new Day18Q04();
}
@Override
public void actionPerformed(ActionEvent e) {
// System.out.println("버튼 눌림");
Lotto lt = new Lotto(); // 로또 번호 담기
// System.out.println(Arrays.toString(lt.num));
// lt.num[0] ==> 30 이미지 배열 img[29]
Ball b1 = new Ball(jbtn[0], img, lt.num[0]);
Ball b2 = new Ball(jbtn[1], img, lt.num[1]);
Ball b3 = new Ball(jbtn[2], img, lt.num[2]);
Ball b4 = new Ball(jbtn[3], img, lt.num[3]);
Ball b5 = new Ball(jbtn[4], img, lt.num[4]);
Ball b6 = new Ball(jbtn[5], img, lt.num[5]);
b1.start(); // 스레드 start
b2.start();
b3.start();
b4.start();
b5.start();
b6.start();
// 랜덤하게 몇 개의 이미지를 미리 보여주기 >> sleep 같이 쓰면 느려지니까 멀티 쓰레드로!
// Random rnd = new Random();
//
// for(int i=0; i<20; i++) { // 랜덤 지정을 20번 반복
// for(int j=0; j<jbtn.length;j++) {
// jbtn[j].setIcon(img[rnd.nextInt(45)]); // 랜덤하게 이미지 지정
// try {
// Thread.sleep(50);
// } catch (InterruptedException e1) {
// // TODO Auto-generated catch block
// e1.printStackTrace();
// } // 조금 느리게 돌아가게.. sleep
// // 오류 발생하니까 try, catch 넣어주기(예외 처리)
// }
// }
// for(int i=0; i<jbtn.length; i++) {
// jbtn[i].setIcon(img[lt.num[i]-1]); // 로또 이미지 부착
// System.out.print((lt.num[i]+"\t"));
// }
// System.out.println();
// btn1.setLabel(""+lt.num[0]); // ""+숫자 = 문자
// btn2.setLabel(""+lt.num[1]);
// btn3.setLabel(""+lt.num[2]);
// btn4.setLabel(""+lt.num[3]);
// btn5.setLabel(""+lt.num[4]);
// btn6.setLabel(""+lt.num[5]);
}
}
|
cs |
'Java' 카테고리의 다른 글
[Java] I/O Stream (DataInputStream / ObjectInputStream) + 메모장, 파일 복사기 기능 구현 (0) | 2023.03.29 |
---|---|
[Java] I/O Stream (InputStream / OutPutStream) (0) | 2023.03.28 |
[Java] Thread 스레드 / Multi Thread (0) | 2023.03.27 |
[Java] Exception ( Error, Exception, 예외 처리, 예외 전가) (0) | 2023.03.27 |
[Java] JFrame - Swing (이미지 아이콘, 메모장, 채팅) (0) | 2023.03.24 |