carookee - group communication for you
Home / JavaForum / Beginner
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
2.518 User online
0 User eingeloggt
 

Beiträge
   Antworten     Neuer Beitrag    

Beitrag 1999 von 2963 (67%) |<   <   >   >|

Autor Harald Faber
Datum 26.11.03, 13:30
Betreff Re: Non Static variable cannont be referenced to a static content...


    Zitat:
    public class DatenVerwaltung extends JFrame
    {
        MyActionListener myActionListener = new MyActionListener();
        
        JMenuBar Menu = new JMenuBar();
        JMenu menuDatei = new JMenu("Datei");
        JMenuItem openDatei = new JMenuItem("Datei Öffnen...");
        JMenuItem saveDatei = new JMenuItem("Datei Speichern...");
        JMenuItem endDatei = new JMenuItem("Beenden");
    }



    Und hier für den ActionListener:
    import java.awt.event.*;
    import java.awt.*;

    public class MyActionListener implements ActionListener {
        
        DatenVerwaltung dv1;
        
        
        public void actionPerformed(ActionEvent e)
        {
            Object src = e.getSource();
            
            if (src == DatenVerwaltung.saveDatei)
             System.out.println("hallo");
            else if (src == DatenVerwaltung.endDatei)
             System.out.println("tschüss");
            
        }
    }


    Die Sache ist die, das ich die Variablen(bzw. Menueinträge) "saveDatei" und "endDatei" nicht in der ActionListener Klasse verwenden kann, da dann eben diese Meldung kommt:
    "Non-Static variable saveDateicannot be refferenced to a static content"

    Wäre toll wenn mir das einer erklären kann!
    Vielen Dank schomal!
Ich denke, die Fehlermeldung verstehst Du?!
Du versuchst, mit <Klassenname>.<Variablenname> zuzugreifen (DatenVerwaltung.saveDatei). Das geht nur, wenn die Variable auch als static deklariert ist. Das ist natürlich nicht der Fall und auch nicht nötig.

Mich wundert, dass hier zum wiederholten Mal Beispiele aufgeführt werden, in denen für den ActionListener extra eine Klasse angelegt wird. Einfacher ist jeweils ein anonymer ActionListener auf das Objekt, was auf Mausklick reagieren soll.
In dem o.a. Fall wäre

saveDatei.addActionListener(new java.awt.event.ActionListener()
{
    public void actionPerformed(ActionEvent e)
    {
        // entweder hier jetzt Minicode oder bei ausführlichen Aktionen Methodenaufruf, z.B.:
        saveDatei_actionPerformed(e);
        // wobei saveDatei_actionPerformed(ActionEvent ae) noch in der Klasse Datenverwaltung implementiert werden muss
    }
});


angebracht. Damit entfällt die Aufschlüsselung auf die aufrufende Quelle, denn jedes MenuItem bekommt einen eigenen ActionListener. Weiterer Vorteil in dem o.a. Beispiel: So kann im ActionListener auf Klassenvariablen usw zugegriffen werden - jedoch nicht mit der this-Referenz!

Ich hoffe, das war jetzt einigermaßen verständlich?!


Diskussionsverlauf:
                    AW: AW: Non Static variable cannont be referenced to a static content...
    AW: Non Static variable cannont be referenced to a static content...
Non Static variable cannont be referenced to a static content...
                        Re: AW: AW: Non Static variable cannont be referenced to a static content...
                            Re: AW: AW: Non Static variable cannont be referenced to a static content...
        Re: AW: Non Static variable cannont be referenced to a static content...
            Re: AW: Non Static variable cannont be referenced to a static content...
                Re: AW: Non Static variable cannont be referenced to a static content...
    Re: Non Static variable cannont be referenced to a static content...

 Auf diesen Beitrag antworten
 Neuen Beitrag verfassen


|<   <   >   >|

                                                                                                                                                                                                                           

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