Hoi GoT members ..
Ik heb een vraagje :
Ik ben nu bezig met het leren van threads en nu heb ik een voorbeeldje uit het boek java stap voor stap over getikt, maar nu zit er waarschijnlijk een foutje in?!?
Het is een programmaatje dat een bal heen en weer laat stuiteren binnen een vierkantje.
In het boek staat dat ik via een while lus die controleert of de boolean keepGoing nog true is de thread doorloopt en zodra dat de boolean false (dmv het op de stop knop drukken dan word de methode pleaseStop aangeroepen en boolean keepGoing=false) is dat dan de thread stopt.
Ik weet niet wat er fout is ik heb alles al geprobeerd, weten jullie wat hier verkeerd staat?
Alvast bedankt Patrick
Ik heb een vraagje :
Ik ben nu bezig met het leren van threads en nu heb ik een voorbeeldje uit het boek java stap voor stap over getikt, maar nu zit er waarschijnlijk een foutje in?!?
Het is een programmaatje dat een bal heen en weer laat stuiteren binnen een vierkantje.
In het boek staat dat ik via een while lus die controleert of de boolean keepGoing nog true is de thread doorloopt en zodra dat de boolean false (dmv het op de stop knop drukken dan word de methode pleaseStop aangeroepen en boolean keepGoing=false) is dat dan de thread stopt.
Ik weet niet wat er fout is ik heb alles al geprobeerd, weten jullie wat hier verkeerd staat?
Alvast bedankt Patrick
code:
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
| import java.awt.*;
import java.applet.Applet;
import java.awt.event.*;
public class Opgave204 extends Applet implements ActionListener
{
private Button btStart,btStop;
private Ball ball;
public void init()
{
btStart = new Button("Start");
add(btStart);
btStart.addActionListener(this);
btStop = new Button("Stop");
add(btStop);
btStop.addActionListener(this);
}
public void actionPerformed(ActionEvent e)
{
if (e.getSource() == btStart)
{
Graphics g = getGraphics();
Ball ball = new Ball(g);
ball.start();
}
if (e.getSource() == btStop)
ball.pleaseStop();
}
}
class Ball extends Thread
{
private Graphics g;
private int x = 0, xChange = 7;
private int y = 0, yChange = 2;
private int diameter = 10;
private boolean keepGoing;
private int rectLeftX = 0, rectRightX = 100;
private int rectTopY = 0, rectBottomY = 100;
public Ball(Graphics graphics)
{
g = graphics;
keepGoing = true;
}
public void pleaseStop()
{
keepGoing = false;
}
public void run()
{
g.drawRect(rectLeftX, rectTopY,
rectRightX-rectLeftX, rectBottomY-rectTopY);
while (keepGoing)
{
g.setColor(Color.lightGray);
g.fillOval( x, y, diameter, diameter);
if ( y + yChange <= rectTopY)
yChange = -yChange;
if ( y + yChange + diameter >= rectBottomY)
yChange = -yChange;
if ( x + xChange >= rectRightX)
xChange = -xChange;
if ( x + xChange <= rectLeftX)
xChange = -xChange;
y = y + yChange;
x = x + xChange;
g.setColor(Color.red);
g.fillOval(x, y, diameter, diameter);
try
{
Thread.sleep(50);
}
catch (InterruptedException e)
{
System.err.println("sleep exception");
}
}
}
} |