import java.awt.*;import java.awt.event.*;public class KlickTest extends Frame // Fenster, implementiert die Klasse Ausgabe{ Ausgabe fausgabe = new Ausgabe(); KlickTest() { add( fausgabe ); fausgabe.ausgeben( "initiert" ); // <--- Methode ausgeben von aktuellem Objekt wird aufgerufen, geht } public static void main( String arg[] ) { KlickTest jforum = new KlickTest(); jforum.pack(); jforum.show(); }}class EinFeld extends Canvas implements MouseListener{ int aendern; EinFeld() { addMouseListener( this ); setBackground( new Color(150,150,150) ); } public void mouseClicked( MouseEvent e ) { Graphics k = this.getGraphics(); k.setColor( Color.red ); k.clearRect(0,0,50,50); if( aendern % 2 == 0 ) k.fillRect( 10, 10, 30, 30 ); else k.fillOval( 10, 10, 30, 30 ); aendern++; // *** Hier Ausgabe-Objekt erzeugen und Methode ausgabe aufrufen ******** Ausgabe a =new Ausgabe(); a.ausgeben( "Nachm Klick"); //********************************************************************** } public Dimension getPreferredSize() { return new Dimension( 50, 50 ); } public void mousePressed( MouseEvent e ) {} public void mouseEntered( MouseEvent e ) {} public void mouseExited( MouseEvent e ) {} public void mouseReleased( MouseEvent e ) {}}class Ausgabe extends Panel{ EinFeld feld = new EinFeld(); // implementiert das graue Feld Label l_ausgabe; // Ausgabefeld static int InstanzenZaehler; // zaehlt die Anzahl der erzeugten Objekte int hochzeahlen; // zaehlt, wie oft ausgeben von einem Objekt aufgerufen wurde Ausgabe() { l_ausgabe = new Label( "Vorm Klick" ); l_ausgabe.setFont( new Font( "Monospace", Font.BOLD, 20) ); add( feld ); add( l_ausgabe ); InstanzenZaehler++; } // hierum geht's : public void ausgeben( String text ) { hochzeahlen++; // geht immer: System.out.println( InstanzenZaehler + " Ausgabe-Objekte vorhanden"); System.out.println( hochzeahlen + ". mal: Methode ausgeben wurde aufgerufen\n\n"); //geht nur am Anfang : l_ausgabe.setText( text ); // <----- Geht leider nicht, wenn Methode aus Objekt EinFeld durch Klick aufgerufen wird }}