⇤ ← Revision 1 as of 2005-04-08 12:17:51
4080
Comment:
|
← Revision 2 as of 2008-10-03 20:20:31 ⇥
4080
converted to 1.6 markup
|
No differences found! |
1 package nl.tue.id.dps.swing;
2
3 import java.awt.*;
4 import javax.swing.*;
5 import java.awt.event.MouseEvent;
6 import java.awt.event.MouseAdapter;
7 import java.util.Vector;
8 import java.util.Iterator;
9
10 /**
11 * <p>Title: ITML</p>
12 *
13 * <p>Description: Distributed Media Extension to X-Smiles</p>
14 *
15 * <p>Copyright: Copyright (c) 2004</p>
16 *
17 * <p>Company: ID, TU/e</p>
18 *
19 * @author HU, Jun
20 * @version 1.0
21 */
22 public class BallFrame
23 extends JFrame {
24 TimeCounter counter = new TimeCounter();
25 BorderLayout borderLayout1 = new BorderLayout();
26 JPanel ballPanel = new JPanel();
27 Vector listeners = new Vector();
28
29 public void addBallListener(BallListener listener){
30 listeners.add(listener);
31 }
32
33 public void removeBallListener(BallListener listener){
34 listeners.remove(listener);
35 }
36
37 public static void main(String arg[]){
38 BallFrame ball = new BallFrame();
39 ball.pack();
40 ball.show();
41 ball.cold();
42 }
43
44 public BallFrame() {
45 try {
46 jbInit();
47 }
48 catch (Exception exception) {
49 exception.printStackTrace();
50 }
51 counter.start();
52 }
53
54 private void jbInit() throws Exception {
55 getContentPane().setLayout(borderLayout1);
56 ballPanel.addMouseListener(new BallFrame_ballPanel_mouseAdapter(this));
57 this.getContentPane().add(ballPanel, java.awt.BorderLayout.CENTER);
58 ballPanel.setMinimumSize(new Dimension(640, 480));
59 ballPanel.setPreferredSize(new Dimension(640, 480));
60 }
61
62 public void setBallColor(Color c){
63 ballPanel.setBackground(c);
64 }
65
66 public void ballPanel_mousePressed(MouseEvent e) {
67 counter.startCounting();
68
69 }
70
71 public void ballPanel_mouseReleased(MouseEvent e) {
72 counter.stopCounting();
73 }
74
75 public void cold(){
76 setBallColor(Color.blue);
77 Iterator i = listeners.iterator();
78 while(i.hasNext()){
79 BallListener ballListener = (BallListener)i.next();
80 ballListener.becomeCold();
81 }
82 }
83
84 public void warm(){
85 setBallColor(Color.yellow);
86 Iterator i = listeners.iterator();
87 while(i.hasNext()){
88 BallListener ballListener = (BallListener)i.next();
89 ballListener.becomeWarm();
90 }
91 }
92
93 public void warmer(){
94 setBallColor(Color.orange);
95 Iterator i = listeners.iterator();
96 while(i.hasNext()){
97 BallListener ballListener = (BallListener)i.next();
98 ballListener.becomeWarmer();
99 }
100 }
101
102 public void warmest(){
103 setBallColor(Color.red);
104 Iterator i = listeners.iterator();
105 while(i.hasNext()){
106 BallListener ballListener = (BallListener)i.next();
107 ballListener.becomeWarmest();
108 }
109 }
110
111 class TimeCounter extends Thread {
112 boolean counting = false;
113 int n = 0;
114 public void run(){
115 while(true){
116 if(counting){
117 try {
118 sleep(2000);
119 }
120 catch (InterruptedException ex1) {
121 }
122 n = n+1;
123 if (n == 1){
124 warm();
125 }
126 else if (n== 2){
127 warmer();
128 }
129 else if (n==3){
130 warmest();
131 }
132 else{
133 n = 4;
134 }
135
136 }
137 else{
138 try {
139 sleep(2000);
140 }
141 catch (InterruptedException ex1) {
142 }
143 n = n-1;
144 if (n == 3){
145 warmest();
146 }
147 else if (n== 2){
148 warmer();
149 }
150 else if (n==1){
151 warm();
152 }
153 else{
154 n = 0;
155 cold();
156 }
157
158 }
159 }
160
161 }
162 public void startCounting(){
163 counting = true;
164 }
165 public void stopCounting(){
166 counting = false;
167 }
168 }
169
170
171 }
172
173
174 class BallFrame_ballPanel_mouseAdapter
175 extends MouseAdapter {
176 private BallFrame adaptee;
177 BallFrame_ballPanel_mouseAdapter(BallFrame adaptee) {
178 this.adaptee = adaptee;
179 }
180
181 public void mousePressed(MouseEvent e) {
182 adaptee.ballPanel_mousePressed(e);
183 }
184
185 public void mouseReleased(MouseEvent e){
186 adaptee.ballPanel_mouseReleased(e);
187 }
188 }