this in statischer Klasse

Wolfy0013

Mitglied
Hallo,
Meine heutige Frage lautet wie folgt:
Ich rufe in meiner Hauptklasse eine Klasse auf, die ein Textfeld öffnet auf das dann der Focus gerichtet wird.
Bei Esc-Drücken wird dieses dann wieder ausgeblendet und ich öffne eine statische Mehtode in der ich this.grabFocus aufrufe.
Aber: this kann man nicht in einem statischen Kontext aufrufen!
Kennt ihr da eine Lösung!
Danke ,Wolfy
 
Hallo,

Es hört sich an als hättest du sowas.
Code:
public class MyTextField extends JTextField{

   public static void machWas(){
       this.grabFocus();
   }

}

Also falls du sowas haben solltest, funktioniert sowas nicht. Du kannst keine Instanz-Methode ohne ein Object aufrufen. Du bräuchtest ein Object auf dem du grabFocus aufrufst.

Gruß

Sascha
 
@Sascha
Ich glaube da hast du was falsch verstanden, beziehungsweise ich habe es falsch erklärt.
Ich habe schnell ein Bild erstellt, das mein Problem veranschaulichen sollte!
klassen.jpg
 
Entferne das "static" im Methodenkopf von "setFocus". Das macht doch hier keinen Sinn.
Dafür brauchst du in Klasse2 ein Datenelement vom Typ Klasse1
Java:
private Klasse1 kl1;

//und irgendwo eine Instanz erstellen

kl1 = new Klasse1();
kl1.setFocus(); //funktioniett
 
Bei dieser Methode wird aber eine völlig neue Instanz der Klasse1 erstellt, und somit habe ich dann zwei Klasse1-Klassen, was ich natürlich nicht will.
Mit dem Static ruft es ja automatisch die Methode in der Instanz, wo die Klasse2-Instanz erstellt worden ist, auf.
 
Könntest du mal den Code posten, damit man mal sieht, was du eigentlich genau machst. So kann man die eventuell einen besseren Tipp geben.

und somit habe ich dann zwei Klasse1-Klassen,
Du meinst du hast zwei Klasse1-Objekte.

Gruß

Sascha
 
Ich habe gerade selbst ein Lösung gefunden, indem ich in der serFocus-Methode einen Roboter klicken lasse und dadurch this.grabfocus() im MouseListener aufrufe.
Danke trotzdem für die Hilfeansätze, Wolfy
 
Das ist aber eine sehr umständliche Lösung, die Robot-Klasse zu nutzen um lediglich einem Textfeld den Fokus zu geben.

Wenn du mal den Code posten würdest, würden wir sicherlich eine bessere Lösung finden.

Gruß

Sascha
 
Zurück