• hi, ich hab net sonderlich viel ahnung von events, bis jetzt hab ich immer die klasse in der die events ausgelöst wurden als eventhandler verwendet. und zwar mit:

    [code=php]

    public void actionPerformed (ActionEvent e)
    {
    if (e.getSource()==jButtonInputFileSelect)
    {...

    PHP]

    jetzt will ich aerb eine eigene klasse machen die die ganzen events behandelt. dann kann ich allerdings minna auf das Objekt "jButtonInputFileSelect" zugreifen. wie kann ich sowas realisieren?

  • Du kannst diese klasse als inner class machen dann kannst du auf die private vars zugreifen, dazu musst du aber die Oberklasse irgendwie mitgeben, meistens passiert das im Konstruktor.
    Oder du machst get methoden um auf die Button Objekte zuzugreifen.

    Beide Methoden sind nicht sonderlich schön und nicht objekt orientiert. Warum willst du alles in ein Handler Object stopfen und machst nicht für jedes Event ein eigenes. Meistens reichen sogar anonyme Klassen aus. Das ist dann leicht wartbar und du sparst dir diese ganzen Ifs.

  • Zitat


    Beide Methoden sind nicht sonderlich schön und nicht objekt orientiert. Warum willst du alles in ein Handler Object stopfen und machst nicht für jedes Event ein eigenes. Meistens reichen sogar anonyme Klassen aus. Das ist dann leicht wartbar und du sparst dir diese ganzen Ifs.

    meinst du, dass ich für jeden button eine eigene klasse mach, die die events handelt?

    falls net dann folgendes: ich hab net wirklich eine ahnung davon. mein gedanke war, da meine klasse schon so vollgestopft ist mit deklarationne, will ich den eventhaldler in eine eigene klasse geben. ich sollt aber am besten weiterhin auf die anderen objekte zugreifen können. war das verständlich?

  • Zitat

    meinst du, dass ich für jeden button eine eigene klasse mach, die die events handelt?


    genau.
    Ich weiß jetzt nicht wie dein code aussieht und ob du wirklich bei jedem Event auf alle Variablen zugreifen musst, wenn ja dann mach dir ein package setz die variablen protected, die listener sind in der selben package also können die auf alles zugreifen.
    Du brauchst nicht mal ne Referenz zum Hauptfenster, die bekommst du mit getSource().
    Wenn nicht dann gib immer nur das mit was du brauchst damit die Objekte besser gekapselt sind.

  • das geht mir alles bissal zu schnell.


    ich bekomm die fehlermeldungen, dass er die variablen renderer und jTextInputFile net kennt (woher auch), sind aber in einer klasse definiert, die im gleichen package is.


    PHP
    ... jButtonStart.addActionListener(this); ....

    steht in der klasse die die events auslöst.

  • warum jButtonStart.addActionListener(this) ?
    wenn du die neue Klasse verwenden willst musst du so was schreiben:

    Code
    jButtonStart.addActionListener(new Event_ButtonStart());

    das er den renderer und jTextInputFile nicht kennt ist klar, ich glaub das einfachste ist im construktor von Event_ButtonStart die hauptklasse mitzugeben dann kannst ohne probleme auf alles zugreifen was nicht private ist.

  • am einfachsten ist das mit einer anynomen klasse ..

    Überzeugungen sind gefährlichere Feinde der Wahrheit als Lügen.
    --
    Friedrich Nietzsche

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!