Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

foreach

Frischling

  • »foreach« ist der Autor dieses Themas

Beiträge: 87

Beruf: Student

  • Private Nachricht senden

1

15.05.2010, 21:02

Suche nach richtigem EventListener

hi leute,
für ein bluej projekt in der schule würde ich einen EventListener benötigen der eine methode dann ausführt wenn eine variable geändert wird.
leider konnte ich bis jetzt keinen passenden finden :(.
ich würde mich deshalb sehr freuen wenn ihr mir einen passenden EventListener empfehlen könntet.

danke im voraus für eure antworten.

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

2

15.05.2010, 21:18

Für sowas gibts standardmäßig kein Konstrukt. Musst du dir selbst bauen, z.B. indem du bei settern auf Änderungen reagierst oder indem du Typen wrappst.
@D13_Dreinig

foreach

Frischling

  • »foreach« ist der Autor dieses Themas

Beiträge: 87

Beruf: Student

  • Private Nachricht senden

3

15.05.2010, 21:22

danke für die schnelle antwort.
könntest du mir evtl. ein code beispiel dazu geben, das würde mir wirklich sehr helfen.

Tobiking

1x Rätselkönig

  • Private Nachricht senden

4

15.05.2010, 22:49

Eine Möglichkeit wäre das Observer Pattern: http://de.wikibooks.org/wiki/Java_Standa…util.Observable

5

16.05.2010, 00:47

Meinst du eine Art EventSystem wie in WxWidgets zum Beispiel?

foreach

Frischling

  • »foreach« ist der Autor dieses Themas

Beiträge: 87

Beruf: Student

  • Private Nachricht senden

6

16.05.2010, 08:12

@Tobiking: danke das geht in die richtige richtung. du hast mich wirklich weiter gebracht.
@Zero: ja genau so etwas. ich würde ein konstrukt benötigen, das wie ein ActionListener auf das drücken eines Buttons reagiert, nur eben auf das änderen einer variable.

Beiträge: 774

Beruf: Student

  • Private Nachricht senden

7

16.05.2010, 08:53

Hm naja also ich kann mir den Anwendungszweck ein universales auf-Variablen-Änderung-reagieren jetzt nicht so gut vorstellen. Aber ich hab gerade folgende Idee dazu:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
enum EEvent : unsigned int  // ": unsigned int" nicht nötig, aber ich steh auf dieses neue C++0x-Feature
{
    // ...
    EVENT_HAVEFUN
    // ...
};

class EventHandler
{
    // ......
public:
    template<typename Type> void TriggerVarEvent(const EEvent VarEvent, const Type& NewVarValue);
    // ......
};

template<typename Type> class ObservedVar
{
public:
    ObservedVar(const Type _Var, const EventHandler& _EventHandler, const EEvent _ChangeEvent) : 
                    Var(Var), EventHandler(_EventHandler), ChangeEvent(_ChangeEvent)
    { m_Var = Var; }
    ~ObservedVar();

    // ggf. noch andere operatoren überladen .. zB +=, + .... - man könnte hierzu eine festgelegte forlaufende Kette von Events für jeden Type einführen (kann aber gefährlich werden weil man ja dann immer dafür sorgen muss, dass entsprechende Werte da sind)
    const Type& operator =  (const Type& rhs)   { Var = rhs; EventHandler.TriggerVarEvent(ChangeEvent, Var); return this; }

    // lesezugriff
    const Type& Get() { return Var; }

private:
    Type            Var;
    EventHandler&   EventHandler;
    EEvent          ChangeEvent;
};

War sogar jetzt so lustig und habs kompilierfähig gemacht :lol:
Hm ja also das ganze hat natürlich pro Variable nen sehr argen Overhead.. aber vllt hilfts ja als Denkansatz weiter.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Wümpftlbrümpftl« (16.05.2010, 09:57)


foreach

Frischling

  • »foreach« ist der Autor dieses Themas

Beiträge: 87

Beruf: Student

  • Private Nachricht senden

8

16.05.2010, 09:11

@Wümpftlprümpftl:danke das hilft mir weiter. für mein projekt ist die rechenzeit pro variable eigentlich egal.

Werbeanzeige