1. Weiterleitung zu NetzLiving.de
  2. Forum
    1. Unerledigte Themen
  3. zum neuen Forum
  • Anmelden
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

events

  • bimbo
  • 14. Dezember 2002 um 18:31
  • Unerledigt
Hallo zusammen,

das Informatik-Forum geht in den Archivmodus, genaue Informationen kann man der entsprechenden Ankündigung entnehmen. Als Dankeschön für die Treue bekommt man von uns einen Gutscheincode (informatikforum30) womit man bei netzliving.de 30% auf das erste Jahr sparen kann. (Genaue Infos sind ebenfalls in der Ankündigung)

Vielen Dank für die Treue und das Verständnis!
  • bimbo
    Punkte
    2.320
    Beiträge
    390
    • 14. Dezember 2002 um 18:31
    • #1

    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?

  • bla
    Gast
    • 14. Dezember 2002 um 18:51
    • #2

    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.

  • bimbo
    Punkte
    2.320
    Beiträge
    390
    • 14. Dezember 2002 um 19:00
    • #3
    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?

  • bla
    Gast
    • 14. Dezember 2002 um 19:15
    • #4
    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.

  • bimbo
    Punkte
    2.320
    Beiträge
    390
    • 14. Dezember 2002 um 19:31
    • #5

    das geht mir alles bissal zu schnell.


    PHP
    package mm1;
    
    
    import java.awt.event.*;
    
    
    public class Event_ButtonStart implements ActionListener
    {
      public void actionPerformed (ActionEvent e)
      {
        renderer = new RealtimeRenderer(jTextInputFile.getText());
        renderer.start();
      }
    }
    Alles anzeigen

    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.

  • bla
    Gast
    • 14. Dezember 2002 um 19:52
    • #6

    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.

  • bimbo
    Punkte
    2.320
    Beiträge
    390
    • 14. Dezember 2002 um 20:01
    • #7

    habs schon, danke!!!

  • root@axp1
    Punkte
    125
    Beiträge
    25
    • 14. Dezember 2002 um 20:13
    • #8

    am einfachsten ist das mit einer anynomen klasse ..

    Code
    public class deineklasse {
     private JButton button;
     deineklasse () {
       ...
       button.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            button_action(e);
          }
       });
       ...
      }
    
    
      private void button_action (ActionEvent e) {
        ...
      }
    }
    Alles anzeigen
  • Maximilian Rupp 27. Dezember 2024 um 12:08

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

  1. Datenschutzerklärung
  2. Impressum