import java.awt.*; import java.awt.event.*; import javax.swing.*; /** Demonstratie van het afhandelen van * gebeurtenissen met betrekking tot de muis. * Deze toepassing toont een venster met negen * gekleurde rechthoeken. De rechthoek waarboven * de muisaanwijzer zich bevindt, heeft tijdelijk * een verschillende kleur. * @author Lieven Smits * @version 1.0 24/7/2000 */ class MuisVolgerSwing extends JFrame implements MouseListener { /** Negen gekleurde rechthoeken. */ JPanel[] p; /** Construeer het venster met driemaal drie * gekleurde rechthoeken. * @param titel * De titeltekst van het venster. */ MuisVolgerSwing(String titel) { /* roep constructor van moederklasse JFrame op */ super(titel); /* instantieer rij van negen rechthoeken */ p = new JPanel[9]; /* GridLayout heeft ook een constructor met vier parameters: de derde en vierde parameter bepalen horizontale en verticale marges tussen de individuele componenten */ Container c = getContentPane(); c.setLayout(new GridLayout(3, 3, 10 ,10)); for (int i = 0; i < 9; i++) { /* instantieer individuele rechthoek */ p[i] = new JPanel(); /* beginkleur (zie documentatie van de klasse Color voor een volledige lijst */ p[i].setBackground(Color.lightGray); p[i].addMouseListener(this); c.add(p[i]); } } /** Doe niets -- deze methode moet echter * aanwezig zijn in elke klasse die de interface * MouseListener implementeert */ public void mouseClicked(MouseEvent e) { } /** Als de muis een rechthoek binnentreedt, * wordt die rechthoek donkergrijs. */ public void mouseEntered(MouseEvent e) { for (int i = 0; i < 9; i++) if (e.getSource().equals(p[i])) { p[i].setBackground(Color.darkGray); break; // event is afgehandeld } } /** Als de muis een rechthoek verlaat, * wordt die rechthoek lichtgrijs. */ public void mouseExited(MouseEvent e) { for (int i = 0; i < 9; i++) if (e.getSource().equals(p[i])) { p[i].setBackground(Color.lightGray); break; // event is afgehandeld } } /** Doe niets -- deze methode moet echter * aanwezig zijn in elke klasse die de interface * MouseListener implementeert */ public void mousePressed(MouseEvent e) { } /** Doe niets -- deze methode moet echter * aanwezig zijn in elke klasse die de interface * MouseListener implementeert */ public void mouseReleased(MouseEvent e) { } /** Toon een venster met driemaal drie lichtgrijze * rechthoeken, die tijdelijk donkergrijs worden * wanneer de muisaanwijzer eroverheen beweegt. */ public static void main(String[] args) { MuisVolgerSwing deVolger = new MuisVolgerSwing( "Muisvolger - versie Swing"); deVolger.setSize(500, 300); deVolger.show(); } }