-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathLabelThread.java
93 lines (77 loc) · 1.83 KB
/
LabelThread.java
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
import java.awt.Color;
import javax.swing.JLabel;
// 동작을 실행하기위해 Runnable
public class LabelThread extends JLabel implements Runnable {
private int nStart, nFinish;
private Thread myThread;
public LabelThread() {
nStart = nFinish = 0;
myThread = null;
} // LabelThread()
public LabelThread(int s, int f) {
nStart = s;
nFinish = f;
myThread = null;
} // LabelThread()
public LabelThread(String str) {
super(str);
// 부모생성자를 통해 생성
// == setText(str);
nStart = nFinish = 0;
myThread = null;
} // LabelThread()
public int getStart() {
return nStart;
}
public int getFinish() {
return nFinish;
}
public void setStart(int s) {
nStart = s;
}
public void setFinish(int f) {
nFinish = f;
}
public void setRange(int s, int f) {
nStart = s;
nFinish = f;
}
// 통상적으로 필요한 메소드 3가지
// 1.
public void start() {
// 이전에 실행한 값을 저장하기 위해서 초기갑이 null일때만 Thread를 생성
if (myThread == null) {
myThread = new Thread(this);
// Thread가 시작되면 run메소드가 자동으로 호출됨
myThread.start();
}
} // start()
// 2.
public void stop() {
if (myThread != null) {
myThread.stop();
// myThread = null;
}
} // stop()
// 3.
// Thread를 상속받은 클래스는 반드시 run메소드가 있어야한다.
public void run() {
int i, j;
try { // 순서대로 출력된 값을 1초단위로 출력시키기 위해 프로그램 동작속도를 인위적으로 조작하는 sleep메소드를 사용해야하는데 이때 발생하는
// 시스템적인 문제를 방지하고자 try catch를 사용한다.
for (i = nStart; i <= nFinish; i++) {
setText(Integer.toString(i));
myThread.sleep(200);// 0.2초 200
}
setForeground(Color.red);
for (i = 0; i < 10; i++) {
setVisible(false);
myThread.sleep(200);
setVisible(true);
myThread.sleep(200);
}
} catch (
Exception e) {
}
}// run()
}// LabelThread class