package hulp; import javax.swing.*; // voor JFrame en JButton import java.awt.*; // voor de BorderLayout import java.awt.event.*; // voor knopafhandeling /* * Dit programma is gebaseerd op VerplaatsBal2 van Hoofdstuk 4 van het handboek * Dit programma tekent een bal met een vaste grootte, * bijvoorbeeld 100 pixels. De bal staat bij het begin van het * programma ongeveer in het midden van het scherm. * De bal botst op en neer . * Er zijn twee knoppen (naarLinks en naarRechts genoemd) * waarmee de gebruiker de bal naar links en naar rechts kan * bewegen. */ public class GeanimeerdeBalWindow extends JFrame implements ActionListener { private JButton naarLinks, naarRechts, stopKnop; GeanimeerdeBalPaneel bal; // maak een venster met een paneel en knoppen als inhoud public GeanimeerdeBalWindow() { // new BorderLayout() ); // default setSize(700,400); // veel ruimte voor de bal setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setTitle("Verplaatsbare bal, versie 2"); setLocation(100,100); // niet helemaal linksboven bal = new GeanimeerdeBalPaneel(); add( bal, BorderLayout.CENTER ); naarLinks = new JButton("<"); naarLinks.addActionListener(this); add(naarLinks, BorderLayout.WEST ); naarRechts = new JButton(">"); naarRechts.addActionListener(this); add(naarRechts, BorderLayout.EAST ); stopKnop = new JButton("Stop"); stopKnop.addActionListener(this); add(stopKnop, BorderLayout.SOUTH ); setVisible(true); } // bij een klik de horizontale plaats aanpassen en opnieuw tekenen public void actionPerformed(ActionEvent e) { final int VERPLAATSING = 7; // opschuiving per klik if ( e.getSource() == naarLinks) { bal.setHorPlaats( bal.getHorPlaats() - VERPLAATSING ); } else if ( e.getSource() == naarRechts) // naar rechts { bal.setHorPlaats( bal.getHorPlaats() + VERPLAATSING ); } else { bal.run = false; // stoppen van animatie } bal.repaint(); } public static void main( String[ ] args) { GeanimeerdeBalWindow window = new GeanimeerdeBalWindow(); window.bal.animatie(); // START DE ANIMATIE!! } }