Textfeld aus constructor füllen

Ich komme mal wieder nicht weiter :frowning:
Ich habe aus einer Klasse Variabeln (Strings, Int) übergeben und mit System.out.println(…); gibt Netbeans sie auch brav aus.

Allerdings lässt sich damit kein Textfeld beschreiben? Was kappier ich denn nicht?

Wird denn etwas ausgegeben?

String s sind in Java unveränderlich (immutable).

Was genau meinst du damit? Hast du ein grafisches Textfeld dessen Text du ändern möchtest?

Also, mit einem Mouse clicked Event werden die Variabeln an den Constructor „VA_bearbeiten_rmh“ in der Klasse VA_bearbeiten_rmh übergeben.

Dort werden die Variabeln übernommen. Zum Test habe ich den String „Name2“ auf der Console ausgeben lassen.

Das funktioniert auch wunderbar.
grafik

Wenn ich aber die Anweisung hinzufüge zum füllen des Textfeldes „nameVa“ (public Textfeld)

passiert nicht mehr als die Ausgabe des Strings auf der Console. Das Textfeld bleibt aber leer…

Ich denke ja.

grafik

Wenn ich die Variablen einer Methode (update) in der Klasse VA_bearbeiten_rmh übergebe:
grafik

und die Methode als static deklariet ist

funktioniert die setText Anweisung garnicht.

Deklariere ich die Methode als public,

nimmt der Compiler zwar die setText Anweisung, aber

In der Klasse, aus der ich die Variabeln übergebe wird mir diese Anweisung als Fehler angezeigt:
grafik

https://forum.byte-welt.net/t/wie-man-fragen-richtig-stellt/9567

https://wiki.byte-welt.net/wiki/Wie_man_Fragen_richtig_stellt

Sehr hilfreich, danke… Als ob ich nicht Stunde über Stunde damit verbringe ersteinmal das Problem selbst zu lösen, bevor ich mich hilfesuchend an dieses Forum wende…

Und meines Erachtens nach die Frage so ausführlich und in meiner Laiensprache verständlich wie möglich zu formulieren um den Hilfereichenden nicht ihre Zeit zu stehlen…

Aber nochmal, danke für den Hinweis.

Das Problem ist, dass man Fragen nicht mit Screenshots stellt und dir deshalb niemand helfen können wird.
Poste ein „vernünftiges“ sscce/Kskb mit einer „vernünftigen“, umfangreichen und für dich möglichen Beschreibung, dann wird dir auch jemand antworten können.

https://wiki.byte-welt.net/wiki/KSKB

PS: Anstatt viele fragmentierte Beiträge zu erstellen, wäre es besser, einen langen Beitrag zu schreiben, in dem alles zusammenfasst vorkommt.

„Ja sieht simpel aus und sollte funktionieren“
…würde man sagen, wenn man sich nicht mit dem GUI-System auskennen würde.

Das Problem scheint hier nämlich zu sein, dass das Textfeld den Text nun zwar kennt, dem GUI-System jedoch nicht mitgeteilt wurde, dass es neu gezeichnet werden muss.
das bedeutet nach „nameVA.setText()“ fehlt „nameVA.updateUI()“ und „nameVA.validate()“.
Es genügt wohl, wenn man beides an das letzte GUI-Element anhängt, dass man verändert hat und außerdem muss man nun auch noch darauf achten, dass der Constructor niemals in einem Repaint-Event der GUI aufgerufen wird, was das Ganze zu einer sehr schlechten Idee macht.
Ich würde für solche Zwecke z.B. Beans verwenden, also im Constructor nicht die GUI-Elemente verändern, sondern Stellvertreter für diese und nach dem Constructor-Aufruf wenn nötig einen Repaint-Event auslösen, wenn nicht gerade einer läuft oder ich mich gerade gar in einem laufenden befinde. Innerhalb des RP-Events kann man nämlich die Beans auslesen, die GUI-Elemente damit aktualisieren und erst dann neuzeichnen lassen.

Kann auch sein, dass das Textfeld nicht mal initialisiert ist. Durch das Pokemon-Exceptionhandling (catch alles) würde auch eine Nullpointer untergehen.

Okay, das gibt mir eine Richtung vor und ich werde mich dazu belesen. Danke schoneinmal soweit. Ich gebe Rückmeldng sobald ich die Hilfe umgesetzt habe…

:slight_smile:

Wir helfen gerne, aber mach es uns nicht schwerer als nötig. Deshalb nächstes mal bitte:

  • catch-Blöcke nicht leer lassen, wenigstens ein e.printStackTrace() rein, damit du auch siehst, was schief läuft
  • falls ein Fehler ausgegeben wird, diesen auch hier dazupacken
  • keine Screenshots posten, sondern als Code formatierten Text (4 Stellen einrücken oder </> drücken)