carookee - group communication for you
Home / JavaForum / Java allgemein
Infos   |   Features   |   Gold-Edition   |   Kundenservice   
java
  Übersicht
  Forum
Beginner
Java allgemein
JDBC
JNI
Networking
Online-Ressourcen
Swing + AWT
XML
Meckerecke
  Mitglieder
LOGIN





· Passwort vergessen
· Kostenlos anmelden
  Information
  Demo
  Features
  Im Vergleich
  Anmeldung
SUCHE
Beiträge, Foren oder Verfasser finden:
  Kundenservice
  Impressum
  Datenschutz
  AGB
Status
4.984 User online
0 User eingeloggt
 

Beiträge
   Antworten     Neuer Beitrag    

Beitrag 791 von 2212 (36%) |<   <   >   >|

Autor Gast
Datum 20.04.02, 13:39
Betreff Re: Auf Ereignis eines anderen Objekts zugreifen


Hallo,

leider nicht so ganz. Um das mal zu verdeutlichen, habe ich Minimal-Programm
verfasst, an dem man sehen kann, was ich meine.

Klasse KlickTest erzeugt einen Frame und implementiert Ausgabe.
Wenn von hier aus gleich die Methode ausgeben aufgerufen wird, gehts.

Klasse Ausgabe besutzt ein Label und implementiert die Klasse EinFeld.

Klasse EinFeld hat ein Feld [ :) ] und bei einem Klick soll
ein Kästchen gezeichnet werden ( geht, is ja auch kein Problem )
und die Methode ausgeben aufgerufen werden. Dann erscheint aber nur die Ausgabe
in der Konsole, der Text im Label von Ausgabe wird nicht geändert,
wahrscheinlich, weil ich eben eine neue Instanz von Ausgabe erzeugt habe,
die nicht mit dem sichtbaren Ausgabe-Objekt zu tun hat :

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
    }
}



Diskussionsverlauf:
                Ach sooooo :)
Auf Ereignis eines anderen Objekts zugreifen
    Re: Auf Ereignis eines anderen Objekts zugreifen
        Re: Auf Ereignis eines anderen Objekts zugreifen
            Re: Auf Ereignis eines anderen Objekts zugreifen

 Auf diesen Beitrag antworten
 Neuen Beitrag verfassen


|<   <   >   >|

                                                                                                                                                                                                                           

Impressum  · Datenschutz  · AGB  · Infos  · Presse
Ein modernes Forum: teamturn.com