import java.awt.*; import java.awt.event.*; public class MeinFenster implements ActionListener { public static void main(String[] bla) { new MeinFenster(); } Button b1, b2, b3; public MeinFenster() { Frame f = new Frame("Mein 1. Fenster"); Panel p = new Panel(); b1 = new Button("Knopf A"); b2 = new Button("Knopf B"); b3 = new Button("Knopf C"); Button b4 = new Button("Knopf D"); Button b5 = new Button("Knopf E"); Button b6 = new Button("Knopf F"); f.setLayout(new BorderLayout()); p.add(b1); p.add(b2); p.setBackground(Color.RED); f.add(p, BorderLayout.NORTH); f.add(b3, BorderLayout.CENTER); b2.addActionListener( this ); // Polymorhphism in actions b3.addActionListener( this ); Panel p2 = new Panel(); p2.add(b4); p2.add(b5); p2.add(b6); f.add(p2, BorderLayout.SOUTH); // Methode 2: ActionListener als eigene Klasse b5.addActionListener(new DerListener()); // Methode 3 : Inner classes b4.addActionListener(new Listener4()); b6.addActionListener(new Listener6()); // Methode 4: Anonymous inner class - nur für Schwindelfreie! // (Erklärt euch der Florian ;-) f.pack(); f.setVisible(true); } public void actionPerformed(ActionEvent ae) { // Methode 1: Button-Ref als Member, und Event-Source vegleichen Object o = ae.getSource(); if (o == b1) System.out.println("Something has happened at B ONE!!!"); else if (o == b2) System.out.println("Something has happened at B TWO!!!"); else System.out.println("Something else has happened !!!"); } public class Listener4 implements ActionListener { public void actionPerformed(ActionEvent ae) { System.out.println("Something has happened at the 4 Button!"); // Der Witz: Inner classes haben Zugriff auf Members der // outer class !!!! b1.setBackground(Color.BLACK); } } public class Listener6 implements ActionListener { public void actionPerformed(ActionEvent ae) { System.out.println("Something has happened at the 666 Button!"); } } }