Field Summary

RealHAZZARD

Erfahrenes Mitglied
Servus.

Ich wollte mir eine Klasse basteln, und wollte der Klasse auch ein paar Fields (oder wie man das nennt) geben.
Ein Beispiel:
Einem JFrame sage ich mit der Methode _frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);, dass es sich beenden soll, wenn auf schließen geklickt wird. Und dass das Fenster auch weiß was es denn zu tun hat, schreibe ich EXIT_ON_CLOSE in die Methode.
Und das will ich für meine Klasse auch!
Kann mir jemannd einen Tipp oder einen Link geben?
Das Problem mit der Googlesuche ist immer, dass man wissen muss wonach man sucht.
Und ich weiß ja nichtmal so wirklich wie sich das nennt, was ich da machen möchte.

THX
 
Hi !

Ganz einfach :

Der Methode _frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) wird genau genommen ein int übergeben, in der Klasse Frame ist dieses int dann statisch deklraiert worden :

Code:
public static final int EXIT_ON_CLOSE  =  23;
 // Die Zahl habe ich erfunden, da ich sie nicht weiss ... ;-)

In der Methode wird dann geprüft, ob der übergebene Wert 23 bzw. EXIT_ON_CLOSE ist.

Ich hoffe das hilft,

Krösi
 
Danke.
...aber so hatte ich mir das ja auch vorgestellt, aber irgendwie will das nicht.
Immer dann, wenn ich das ausserhalb der Klasse verwenden möchte, bekomm ich das hier
Cannot refer to a non-final variable group inside an inner class defined in a different method
 
Hallo und Halli,
also die Fehelrmeldung sagt doch eigetnlich was da nicht geht.
Du scheinst eine innere Klasse zu haben, die in einer Mehtode deffiniert wurde und auf das ganze zugreifen möchte. Ich vermute mal ganz stark, dass diese Klasse in Form eines anonyme Adapters von Dir definiert wurde. Es sieht aus wie eine Compilerfehlermeldung. Du scheinst deine Konstante nicht final diklariert zu haben in anderen Worten es ist keine Konstante. Ich gehe mal davon aus, Deine "noch nicht"-Konstante ist eine Member der einbettenden Klasse in dessen einer ihrer Mehtoden die annonyme-Adapter-Klasse definierst. Mach doch dieses Member zu einer Konstanten (schreib final davor)

viel Spaß

Takidoso
 
RealHAZZARD hat gesagt.:
Jaaaa. Danke für die Hilfe.
Eine Klasse in dem Sinne wars nicht.
Aber ein ActionListener.
Jetzt geht es!
das freut mich für Dich sehr.
jedoch ist ein ActionListener auch nichts anderes als eine Klasse.
Häufig halt als anonyme Adapterklasse implementiert.

Eine anonyme Adapterklasse heißt deswegen so, weil für sie kein Name verwendet wird
sieht ungefär so dann aus
Code:
...
blabla.addActionListener(new ActionListener()
                          {
                              actionPerformed(Event e)
                              {
                                   lalalala();
                              }
                        });

...

Wobei dieses Beispiel nur so aus dem kopf niedergeschrieben steht, und dabei vielleicht nicht ganz korrekt in der Syntax.
wichtig nur zu wissen ist, dass der dort definierte ActionListener in Form einer anonymen Adapterklasse defineirt ist. Dies ist eine Alternativ-Syntax um bei solchen Kleinigkeiten nicht eine hülle und füll an Klassennamen etc udn sonstiges zusätzliches Geschreibe hat.
Der Compiler definiert aber für diese Schreibweise ebnenso eine class-file und vergibt ihm eine technische benennung. schau doch mal rein in deine vom compiler generierten class-files.

Takidoso
 
Zurück