Getter und Setten bei GUI-Erstellung

MU5T4NG

Mitglied
Hallo,

ich hab irgendwie ein Verständnisproblem, wie die Getter und Setter bei der GUI-Entwicklung richtig eingesetzt werden.

Ich habe hier eine Controller-Klasse und eine View-Klasse mit der eigentlichen GUI. Unter NetBeans kann ich ja die Getter und Setter für die einzelnen Komponenten automatisch erstellen lassen. Das sieht dann bei einem Edit-Feld in etwa so aus:

Java:
public javax.swing.JTextField getjTextField1() {
    return jTextField1;
}

public void setjTextField1(javax.swing.JTextField jTextField1) {
    this.jTextField1 = jTextField1;
}

Aber irgendwie hab ich da keine Ahnung, wie ich damit auf die ganzen Eigenschaften der Komponente zugreifen soll.
Muss ich da immer ein neues Objekt der Komponente erstellen und als Parameter übergeben? Das ist doch viel zu umständlich. :bahnhof:

Aus voller Verzweiflung hab ich das einfach für meine Bedürfnisse angepasst, zum Beispiel so:
Java:
public String getjTextField1() {
    return jTextField1.getText();
}

public void setjTextField1(String text) {
    this.jTextField1.setText = text;
}

Aber irgendwie kanns das auch nicht sein. Da muss ich ja für alle Eigenschaften Getter und Setter schreiben...

Wie gehts denn richtig? :)
 

XHelp

Top Contributor
Also eine Setter Methode für ein ganzes JTextField macht nur bedingt Sinn. Wenn du eine Getter-Methode für ein JTextField hast, dann kannst du:
Code:
view.getjTextField1().getText()
aufrufen, aber das macht auch nur bedingt Sinn. Wenn du z.B. eine Benutzereingabe abfragen willst, dann stell eine Methode
Code:
getUserInput()
zur Verfügung, die ließt intern was sie braucht aus und gibt dann das Ergebnis zurück.
Oder für welchen konreten Zweck brauchst du so ein Konstrukt?
 

Volvagia

Top Contributor
Kommt auf deine Vorlieben, und was du vorhast an. Sag am Besten mal, was du machen willst. Im besten Fall kannst du direkt in der View-Klasse die Instanzen erzeugen, und den anderen Instanzen, die mit dem JTextField etwas machen sollen per Konstruktor übergeben. Aber das:

Java:
this.jTextField1.setText = text;

würde ich in soetwas wie

Java:
this.jTextField1.setText(text);

ändern. Macht irgendwie doch mehr Sinn.
 

MU5T4NG

Mitglied
Mhh, ja da habt ihr auch recht, ich sollte das besser über Methoden machen...

Ich habe das zum Beispiel jetzt bei meinem Login-Frame, da hole ich mir mit Hilfe der Anmeldedaten (die der User bei der Anmeldung eintippt) die BenutzerId, den Benutzernamen und das Passwort von einer Datenbank und speichere die in meiner Modell-Klasse. Damit weiß ich immer, wie die Daten des aktuell angemeldeten Benutzer sind.
Und die Anmeldedaten hole ich mir eben jetzt (noch) per getText. Aber das sollte ich wohl lieber über eine Mehtode "getUserData()" machen, die in der Modellklasse aufgerufen wird.

view.getjTextField1().getText() funktioniert schonmal, das wusste ich auch noch nicht. :D
Und wie sieht das für die Setter-Methode aus?


@Volvagia: Stimmt. Das habe ich nur schnell so hingetippt .setText(text); ist natürlich richtig. :D


Ist das denn so, dass man von anderen Klassen im Normalfall nie direkt auf die Getter/Setter der Komponenten zugreift sondern das immer über separate Methoden macht, die dann auf die Getter/Setter zugreifen?


//Edit:

Ich hab mir jetzt so eine Methode, die mir die Anmeldedaten beim Einloggen zurückliefert, im View erstellt (oder kommt sowas eher ins Modell?). Aber wie kann die eine Methode mehrere Werte zurückgeben? Mit einem Vector, Array oder als Object? Oder was eignet sich dafür?
 
Zuletzt bearbeitet:

Simon_Flagg

Bekanntes Mitglied
ich seh gerade keinen wirklichen sinn, ein setJtextfield() zu machen... die methode würde überhaupt nichts bewirken außer das die referenz auf das component das angezeigt wird verloren geht... --> bei so was eher keinen setter

lg
 

Volvagia

Top Contributor
Nein. Wenn du eine Komposition hast, dann würde ich es schon so machen. Bei einer Aggregation würde ich es schon zurückgeben, sofern es mehr als 10 Methoden hat. Darunter streckt es einfach nur Zeilenlängen/anzahl.

Ich würde es in etwa so machen:

brc9kexvs9m16awoy.jpg


Mit der Verwendung von anonymen Klassen wäre es wesendlich kürzer, aber auch nicht so Übersichtlich.
Ist aber nur vom Hirn in die Tasten.
 

MU5T4NG

Mitglied
Nein. Wenn du eine Komposition hast, dann würde ich es schon so machen. Bei einer Aggregation würde ich es schon zurückgeben, sofern es mehr als 10 Methoden hat. Darunter streckt es einfach nur Zeilenlängen/anzahl.

Auf was bezieht sich die Antwort eigentlich genau? Ich kann das irgendwie nicht zuordnen... ???:L

Ich würde es in etwa so machen:
[BILD]

Mit der Verwendung von anonymen Klassen wäre es wesendlich kürzer, aber auch nicht so Übersichtlich.
:eek:

Sry, aber ich bin eigentlich völliger Javaanfänger und kann kaum richtig objektorientiert programmieren. Ich hab nicht wirklich die Ahnung wie man eine Aggregation/Komposition/Singleton umsetzt. Hab zwar die Begriffe schon alle mal gehört aber das wars auch. :(
Und mit Thread-Programmierung werde ich jetzt nicht auch noch anfangen, das ist alles so schon kompliziert genug. ;)
 

Volvagia

Top Contributor
Auf deinen Post. Warum willst du, wenn du so ein Anfänger bist mit so etwas schwierigen Anfangen? Um von einer DB etwas auszulesen, benötigst du auf jeden Fall als Schnittstelle einen Server. Wenn das Programm direkt darauf zugreift, könnte jeder die Daten beliebig verändern. Auch ein Zugriffspasswort wäre in einen Java-Programm sehr unsicher aufbewart. Ein Server braucht aber mindestens 2 Threads (und damit Klassen): Einen der auf neue Verbindungen wartet, und einer der die eingehenden Daten eines verbundenen Programmes bearbeitet.

Fang doch lieber mit etwas leichteren an und taste dich langsam heran. Damit lernst du auch nach und nach, wie du am Besten die Variablen abspeicherst/übergibst, damit du gut damit zurecht kommst.
 

Bierhumpen

Bekanntes Mitglied
@Volvagia: Dein Design hat (mindestens folgende) mehrere schwere Probleme, ist also eher kontraproduktiv (vor allem für einen Anfänger):

  • Frame erbt von JFrame
  • LoginButton erbt von JButton
  • AuthenticateOnServer hat eine Referenz auf einen JButton ??
  • Button hat Referenz auf den Frame und ein Textfeld ??
  • Model ist ein Singleton ??
  • UserData Klasse ist überflüssig wenn sie nicht zugänglich für den Rest des Programms ist.
 

Volvagia

Top Contributor
Was hast du gegen das Erben von JFrame und JButton? Gut, der Klassenname von Frame ist sehr schlecht gewählt, aber sollte ja nur ein Beispiel sein.
AuthenticateOnServer muss nach der Authentifikation ja den Button wieder enable machen. Würde ich damit im Button warten, bis der Thread fertig ist, würde ich den EDT blockieren. Würde ich einen neuen Thread starten, der wartet, wäre es noch umständlicher.
Der JButton muss die Referenz auf das Frame ja weiter an den AOS-Thread geben, damit dieser bei einer erfolgreichen Authentifikation loggedIn() aufrufen kann. Und das TextFeld braucht er für den Inhalt.
Was ihr gegen das Singleton-Modell habt, verstehe ich nicht. Er sagte doch, dass es eine Klasse ist, um die Userdaten abzuspeichern und von überall her auszulesen. Würde es mehrere Modelle geben, würde ich sie abstrakt machen, um die Modelle austauschbar zu machen. Aber so verstehe ich nicht, was dagegen spricht.
UserData ist ja über die Getter des Models zugänglich. Kompositionen sind ja immer von einen Objekt so stark abhängig, dass es ohne den Objekt garnicht existieren könnte. Würde sich etwas davon die Referenz hohlen, würde das doch der Komposition wiedersprechen, da es auch ohne den anderen Objekt existieren könnte.

Kann natürlich sein, dass ich mich in jeder Zeile geirrt habe. Korrigiert mich bitte, falls es so ist. :)
 

MU5T4NG

Mitglied
Auf deinen Post. Warum willst du, wenn du so ein Anfänger bist mit so etwas schwierigen Anfangen?

Von wollen kann nicht unbedingt die Rede sein. ;)
Wir sollen vom Studium aus ein objektorientiertes Programm mit Datenbankanbindung schreiben, die Sprache konnten wir uns aussuchen. Und Java hatten wir im Studium schon (allerdings nur die Grundlagen) und C# kann ich auch nur Ansatzweise, also habe ich Java genommen. ;)

Ich stecke einfach noch zu sehr in der prozeduralen Programmierung drinnen, von C und Delphi...

Naja, ich werds schon hinbekommen, das Prog soll als Projekt ja auch eine Übung sein und muss nicht perfekt und fehlerfrei sein. ;)
 

Antoras

Top Contributor
Kann natürlich sein, dass ich mich in jeder Zeile geirrt habe. Korrigiert mich bitte, falls es so ist. :)
So sei es.
Was hast du gegen das Erben von JFrame und JButton?
composition over inheritance. Falls dir das nichts sagt => Google
AuthenticateOnServer
Das ist der Name/die Aufgabe einer Methode und nicht einer Klasse.
Was ihr gegen das Singleton-Modell habt, verstehe ich nicht.
Singletons werden dort eingesetzt wo keine zweite Instanz einer Klasse existieren darf (und es geht dabei nicht darum, dass mehrere Instanzen unnütz wären). Das ist hier aber nicht der Fall. Du siehst darin nur einen Ersatz für static. Mehr dazu findest du auch hier.

Zum Rest: Du hast zu viele Abhängigkeiten. Guck dir mal Dependency Injection an.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Getter/Setter - wie sieht ein Setter aus? Und wie nicht? Java Basics - Anfänger-Themen 34
Say Class scope und Instance scope und Getter nur selbstgeschrieben Methoden Java Basics - Anfänger-Themen 11
W Getter/Setter Java Basics - Anfänger-Themen 4
W Unterschiede bei Zugriff auf Objekt und Klassenvariablen über einen Getter? Java Basics - Anfänger-Themen 2
KogoroMori21 Objektvariable anderer Klasse übernehmen, Getter/Setter Java Basics - Anfänger-Themen 11
T Verständnisfrage Objekt Getter Setter Java Basics - Anfänger-Themen 102
KogoroMori21 Getter und Setter Java Basics - Anfänger-Themen 5
O Instanzattribut per Getter Methode zuweisbar, warum? Java Basics - Anfänger-Themen 8
P Klassenübergreifende Ausgabe mittels "getter" nicht möglich Java Basics - Anfänger-Themen 21
J Array über Getter erlangen Java Basics - Anfänger-Themen 34
S Klassen instanziieren und verwenden von Getter und Setter Java Basics - Anfänger-Themen 4
P Klasse hat keinen Zugriff auf getter/setter-Methoden eines Objektes Java Basics - Anfänger-Themen 9
V getter/setter Garage Java Basics - Anfänger-Themen 12
M Getter einer PriorityQueue Java Basics - Anfänger-Themen 1
KopaCoda Getter mehrfach aufrufen -> ist das guter code? Java Basics - Anfänger-Themen 3
V Getter Methode Java Basics - Anfänger-Themen 38
S getter, setter in abstrakter Klasse oder lieber Unterklassen Java Basics - Anfänger-Themen 4
topi Kapselung getter und setter Java Basics - Anfänger-Themen 5
D Setter/Getter für Instanzvariablen praktisch? Java Basics - Anfänger-Themen 19
S Getter/Setter - Variablenklasse ? Java Basics - Anfänger-Themen 5
S getter and setter Java Basics - Anfänger-Themen 12
L Getter und Setter Java Basics - Anfänger-Themen 2
T Extrahiertes Objekt durch Getter bekommen Java Basics - Anfänger-Themen 2
M Generics getter und setter Methoden Java Basics - Anfänger-Themen 4
D Kapselung final Variablen mit Getter? Java Basics - Anfänger-Themen 2
A getter Java Basics - Anfänger-Themen 3
E Methoden Objekte in Methode aufrufen ohne getter und setter? Java Basics - Anfänger-Themen 1
T Getter für Array Java Basics - Anfänger-Themen 4
J-Gallus Ein Getter bekommt eine anderen Type als er Return soll Java Basics - Anfänger-Themen 9
K Public Attribute oder getter - funktioniert leider beides hier nicht Java Basics - Anfänger-Themen 5
L Klassen - Getter & Setter Methoden Java Basics - Anfänger-Themen 2
D Erste Schritte Java - Setter und Getter Java Basics - Anfänger-Themen 1
Z Getter/Setter NullPointer Exception Java Basics - Anfänger-Themen 6
P getter Java Basics - Anfänger-Themen 1
K Klassen Setter/Getter Java Basics - Anfänger-Themen 3
F OOP Schleifen und Probleme mit Setter und Getter Java Basics - Anfänger-Themen 1
L Setter und Getter/Vererbung Java Basics - Anfänger-Themen 6
M Getter Problematik mit ItemListener Java Basics - Anfänger-Themen 17
K Kapselung getter & setter Java Basics - Anfänger-Themen 11
S Array und Getter-Methode Java Basics - Anfänger-Themen 2
Avarion Getter von Super-Klasse funktioniert nicht Java Basics - Anfänger-Themen 10
J Frage zu Setter u. Getter Java Basics - Anfänger-Themen 7
T Variablen Getter-Setter vs Public Variable? Java Basics - Anfänger-Themen 5
Y Konstruktor - Setter/Getter Java Basics - Anfänger-Themen 3
N Klassen fragen zur getter und setter methode Java Basics - Anfänger-Themen 11
D Ab wann getter und setter Java Basics - Anfänger-Themen 2
J Variable per Getter holen - wie ? Java Basics - Anfänger-Themen 2
K getter & setter Java Basics - Anfänger-Themen 6
C getter/setter Problem anscheinend Java Basics - Anfänger-Themen 13
D Getter Mehtode Unsicher Java Basics - Anfänger-Themen 6
G Erste Schritte Getter und Setter Java Basics - Anfänger-Themen 12
B Getter,Setter - Konstruktor überflüssig? Java Basics - Anfänger-Themen 26
N Sprite Methode (Getter, Setter, Konstruktor) Java Basics - Anfänger-Themen 9
S getter/setter aufrufen Java Basics - Anfänger-Themen 9
B Java getter/setter funktioniert nicht! Java Basics - Anfänger-Themen 7
X OOP Getter/Setter überschreiben den Wert ihrer Variablen nicht Java Basics - Anfänger-Themen 4
T Erste Schritte Verständnisfrage: Getter und Setter Methoden Java Basics - Anfänger-Themen 3
M Problem mit getter, liefert nur alte Werte Java Basics - Anfänger-Themen 6
V public Variablen vs Getter + Setter Java Basics - Anfänger-Themen 4
F Getter und Setter Java Basics - Anfänger-Themen 4
lulas[]args getter/setter umstellung Java Basics - Anfänger-Themen 6
El_Lobo Methoden Zu viele Getter- und Settermethoden - geht das einfacher? Java Basics - Anfänger-Themen 3
G Generics kein Zugriff auf getter eines Objekts Java Basics - Anfänger-Themen 4
B Klassen Getter-Setter vor neuem Klassenaufruf - wie? Java Basics - Anfänger-Themen 20
M OOP Aufruf vieler Getter Methoden abkürzen? Java Basics - Anfänger-Themen 7
N OOP Getter, Setter und andere Probleme Java Basics - Anfänger-Themen 8
A OOP Getter und Setter Java Basics - Anfänger-Themen 18
B Variablen keine Arrayübergabe für getter im Interface Java Basics - Anfänger-Themen 8
L Unterschied Konstruktor / Getter Setter Java Basics - Anfänger-Themen 13
L Setter und Getter für Arrays? Java Basics - Anfänger-Themen 4
N boolean bei Setter und getter methoden Java Basics - Anfänger-Themen 21
J int Wert mit getter holen und in String parsen Java Basics - Anfänger-Themen 5
O Universeller GETTER Java Basics - Anfänger-Themen 5
J Die Getter Methode Java Basics - Anfänger-Themen 6
J Getter und Setter auch intern benutzen - guter Stil? Java Basics - Anfänger-Themen 31
Houly Setter/Getter MEthoden testen Java Basics - Anfänger-Themen 4
P OOP Getter&Setter Methoden funktionieren nicht Java Basics - Anfänger-Themen 7
E [Erledigt] Schöner Code zur Reduktion von unzähligen Getter-Methoden Java Basics - Anfänger-Themen 2
H Setter-und-Getter-Konvention Java Basics - Anfänger-Themen 8
V Reflection API - getter und setter Java Basics - Anfänger-Themen 7
-horn- EINE setter/getter klasse aus mehreren klassen befüllen Java Basics - Anfänger-Themen 13
C Getter/Setter Java Basics - Anfänger-Themen 61
F 2 dimensionales Array getter Methode Java Basics - Anfänger-Themen 3
H Frage zu getter und setter Java Basics - Anfänger-Themen 5
S Unbenutzte/überflüssige Getter/Setter herausfinden? Java Basics - Anfänger-Themen 2
K Getter Java Basics - Anfänger-Themen 6
M getter/setter bei JTextField ? Java Basics - Anfänger-Themen 21
G warum Setter/Getter Java Basics - Anfänger-Themen 25
S In einer Liste auf getter und setter zugreifen Java Basics - Anfänger-Themen 6
S JTextField in anderer Classe mit getter Methode auslesen. Java Basics - Anfänger-Themen 2
M if oder verschiedene getter Java Basics - Anfänger-Themen 31
monsterherz Ablauf der Erstellung eines Java Programmes Java Basics - Anfänger-Themen 17
M Java Einstellung von Apache POI für MS Word Erstellung mit Eclipse Java Basics - Anfänger-Themen 6
M Regex Erstellung Problem Java Basics - Anfänger-Themen 2
N Erstellung einer Supermarktwarteschlange Java Basics - Anfänger-Themen 10
B Erstellung einer XML Datei Java Basics - Anfänger-Themen 8
C Erstellung einer Währungsrechnungstabelle Java Basics - Anfänger-Themen 2
B Hilfe bei Regex - Erstellung Java Basics - Anfänger-Themen 5
T Collections Erstellung eines Listeneintrags einer verketteten Liste Java Basics - Anfänger-Themen 5
M Erstellung Interfaces....totale Anfängerfrage Java Basics - Anfänger-Themen 16

Ähnliche Java Themen

Neue Themen


Oben