Forum: PC-Programmierung Java Eclipse Klasse erstellen und auf Variablen zugreifen


von Ahnungsloser Holger (Gast)


Lesenswert?

Hallo,

ich habe noch eine Frage an die Experten:
1
knopf.addActionListener(new knopfListener());

Wenn ich z.B. diese Zeile schreibe, dann bietet mir Eclipse die 
Möglichkeit Create Class knopfListener() an.

Wenn ich dann im Dialog Enclosing Type die Hauptklasse wähle, dann wird 
eine innere Klasse erstellt und ich kann auf die Variablen und Methoden 
der Hauptklasse zugreifen.

Wie greife ich aber auf die Variablen der aufrufenden Klasse zu, wenn 
die Klasse als eigenständige Datei im Paket liegt?

Ich habe gelesen, dass das über getter und setter gemacht werden soll 
aber mir ist nicht klar wie ich das realisieren kann. Irgendwie muss ich 
der neuen Klasse ja mitteilen, wo die Variablen und Methoden liegen ...


mfg
Ahnungsloser Holger

von Ahnungsloser Holger (Gast)


Lesenswert?

Hat sich erledigt.

Ahnungsloser Holger

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Generell kannst du (wenn es eh eine embedded klasse sein soll auch 
scheiben)
1
knopf.addActionListener(new ActionListener(){
2
 //Code der anonymen inneren Klasse
3
 ....
4
});
Wenn du es gerne als eigenständige Klasse haben willst, kannst du eine 
Referenz auf die Klasse im Konstruktor mitgeben
1
new knopfListener(this)

von Ahnungsloser Holger (Gast)


Lesenswert?

@Läubi

Moin, vielen Dank für die vielen Tipps. Ich hatte es auch so versucht. 
Das Problem war einfach, dass z.B. der Knopf, den ich manipulieren 
wollte, noch gar nicht angelegt war. Nur das Feld war da, aber eben kein 
Objekt. Und das geht dann schief ... war eine lange Nacht!

Und nochmals vielen Dank, dass Du mir mit dem Swingworker auf die 
Sprünge geholfen hast. Mit dem Swingworker laufen Swing und rxtxcomm 
wunderbar zusammen ohne großartige Verrenkungen machen zu müssen. Habe 
jetzt auch drei SW, die schön nacheinander abgearbeitet werden ohne das 
die GUI stottert!

Gruß
Holger

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Ahnungsloser Holger schrieb:
> noch gar nicht angelegt war

Alles was man sowieso benötigt, und nicht verändert werden soll am 
besten im Konstruktor anlegen oder direkt initialisieren z.B.
1
private final JButton button1 = new JButton("Mein Button");

Ahnungsloser Holger schrieb:
> Mit dem Swingworker laufen Swing und rxtxcomm
> wunderbar zusammen ohne großartige Verrenkungen machen zu müssen

Sag ich ja ;-)

Ahnungsloser Holger schrieb:
> war eine lange Nacht!

Vielleicht hilft es auch, das aktuelle Projekt erstmal etwas beiseite zu 
legen und sich noch etwas mit den Grundlagen und Konzepten von Java und 
Objektorientierter Programmierung zu beschaffen, dann wir sicher auch 
einiges gleich klarer.

Die Hilfen die Eclipse bietet sind zwar toll, sich aber rein daran 
langzuhangeln und durch try&error führt früher oder später in eine 
Sackgasse.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.