// Programma dat een balletje laat stuiteren // er is geen interactie mogelijk met de knoppen start en stop wanneer je eens op start gedrukt hebt // zolang de bal stuitert, kan er niets anders gebeuren // Dit programma heeft de computer dus in de greep, geen enkele konop op het scherm zal nog werken import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Bouncer1 extends JApplet implements ActionListener { private JButton start, stop; private Ball ball; public void init() { Container container = getContentPane(); container.setLayout(new FlowLayout()); start = new JButton("Start"); container.add(start); start.addActionListener(this); stop = new JButton("Stop"); container.add(stop); stop.addActionListener(this); } public void actionPerformed(ActionEvent event) { if (event.getSource() == start) { Graphics g = getGraphics(); ball = new Ball(g); ball.display(); } if (event.getSource() == stop) ball.pleaseStop(); } } class Ball { private boolean keepGoing; private Graphics g; private int x = 7, xChange = 7; private int y = 0, yChange = 2; private int diameter = 10; 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 display() { g.drawRect(rectLeftX, rectTopY, rectRightX - rectLeftX, rectBottomY - rectTopY); while (keepGoing) { g.setColor(Color.white); g.fillOval (x, y, diameter, diameter); if (x + xChange <= rectLeftX) xChange = -xChange; if (x + xChange >= rectRightX) xChange = -xChange; if (y + yChange <= rectTopY) yChange = -yChange; if (y + yChange >= rectBottomY) yChange = -yChange; x = x + xChange; y = y + yChange; g.setColor(Color.red); g.fillOval (x, y, diameter, diameter); //onderstaande code zorgt voor een vertragingseffect anders gaat het balletje veel te snel try { Thread.sleep(50); } catch (InterruptedException e) { System.err.println("sleep exception"); } } } }