Zugriff auf Components aus einem ActionListener

Status
Nicht offen für weitere Antworten.
V

_VisioN_

Gast
Hallo,

ein Swing-Neuling braucht mal wieder Eure Hilfe.

Also, ich habe mir eine GUI nach dem MVC-Pattern erstellt.

Nun habe ich als GUI eine MDI-Anwendung - d.h. ich habe ein JFrame als Desktop und darin 2 JInternalFrame als Kindfenster.

In einen JInternalFrame habe ich jetzt z.B. einen Dialog, wo ein paar JTextField und ein JButton sind.

Code:

Auszug aus dem JFrame:
Code:
                //ChildFrame3 createStudent
		GridBagLayout gridbaglayout2 = new GridBagLayout();
		GridBagConstraints gridbagconstraints2;
		childframe3.getContentPane().setLayout(gridbaglayout2);
		
		JPanel panel3 = new JPanel();
		JLabel studentlabel = new JLabel("Student");
		panel3.add(studentlabel);
		gridbagconstraints2 = makeGridBagConstraints(0, 0, 2, 1);
		gridbaglayout2.setConstraints(panel3, gridbagconstraints2);
		childframe3.getContentPane().add(panel3);
		
		JPanel panel4 = new JPanel();		
		JLabel matrikelnummerlabel = new JLabel("Matrikelnummer: ");
		JTextField matrikelnummertextfield = new JTextField(50);
		panel4.add(matrikelnummerlabel);
		panel4.add(matrikelnummertextfield);		
		gridbagconstraints2 = makeGridBagConstraints(0, 1, 2, 1);
		gridbaglayout2.setConstraints(panel4, gridbagconstraints2);
		childframe3.getContentPane().add(panel4);
		
		JPanel panel5 = new JPanel();
		JLabel vornamelabel = new JLabel("Vorname: ");		
		JTextField vornametextfield = new JTextField(50);
		panel5.add(vornamelabel);
		panel5.add(vornametextfield);
		gridbagconstraints2 = makeGridBagConstraints(0, 2, 2, 1);
		gridbaglayout2.setConstraints(panel5, gridbagconstraints2);
		childframe3.getContentPane().add(panel5);
		
		JPanel panel6 = new JPanel();
		JLabel nachnamelabel = new JLabel("Nachname: ");
		JTextField nachnametextfield = new JTextField(50);
		panel6.add(nachnamelabel);
		panel6.add(nachnametextfield);
		gridbagconstraints2 = makeGridBagConstraints(0, 3, 2, 1);
		gridbaglayout2.setConstraints(panel6, gridbagconstraints2);
		childframe3.getContentPane().add(panel6);
		
		JPanel panel7 = new JPanel();
		JLabel adresselabel = new JLabel("Adresse");
		panel7.add(adresselabel);
		gridbagconstraints2 = makeGridBagConstraints(0, 4, 2, 1);
		gridbaglayout2.setConstraints(panel7, gridbagconstraints2);
		childframe3.getContentPane().add(panel7);

		JPanel panel8 = new JPanel();
		JLabel strasselabel = new JLabel("Strasse: ");
		JTextField strassetextfield = new JTextField(50);
		panel8.add(strasselabel);
		panel8.add(strassetextfield);
		gridbagconstraints2 = makeGridBagConstraints(0, 5, 2, 1);
		gridbaglayout2.setConstraints(panel8, gridbagconstraints2);
		childframe3.getContentPane().add(panel8);
		
		JPanel panel9 = new JPanel();
		JLabel nrlabel = new JLabel("Nr: ");
		JTextField nrtextfield = new JTextField(50);
		panel9.add(nrlabel);
		panel9.add(nrtextfield);
		gridbagconstraints2 = makeGridBagConstraints(0, 6, 2, 1);
		gridbaglayout2.setConstraints(panel9, gridbagconstraints2);
		childframe3.getContentPane().add(panel9);
		
		JPanel panel10 = new JPanel();
		JLabel plzlabel = new JLabel("PLZ: ");
		JTextField plztextfield = new JTextField(50);
		panel10.add(plzlabel);
		panel10.add(plztextfield);
		gridbagconstraints2 = makeGridBagConstraints(0, 7, 2, 1);
		gridbaglayout2.setConstraints(panel10, gridbagconstraints2);
		childframe3.getContentPane().add(panel10);
		
		JPanel panel11 = new JPanel();
		JLabel ortlabel = new JLabel("Ort: ");
		JTextField orttextfield = new JTextField(50);
		panel11.add(ortlabel);
		panel11.add(orttextfield);
		gridbagconstraints2 = makeGridBagConstraints(0, 8, 2, 1);
		gridbaglayout2.setConstraints(panel11, gridbagconstraints2);
		childframe3.getContentPane().add(panel11);
		
		JPanel panel12 = new JPanel();
		JButton createstudent = new JButton("createStudent");
		panel12.add(createstudent);
		gridbagconstraints2 = makeGridBagConstraints(0, 9, 2, 1);
		gridbaglayout2.setConstraints(panel12, gridbagconstraints2);
		childframe3.getContentPane().add(panel12);

Nun habe ich in dieser Klasse auch einen ActionListener, der dann reagieren soll, wenn jemand den JButton("createStudent") anclickt.
In diesen ActionListener will ich nun aber die JTextField auslesen und einer Methode im Controller übergeben - wie geht das?

Code:

Auszug aus dem ActionListener:

Code:
                else if (command == "createStudent") {
                //wie komme ich jetzt an die JTextField, um der Controllermethode addStudent(String matrikelnummer,
                //String vorname, String nachname, String strasse, String nr, String plz, String ort) den Inhalt der
                //JTextField zu übergeben?
                }
 

ronny

Bekanntes Mitglied
öha, solche sachen wie addStudent(..) haben im Controller nix zu suchen!
Der Controller holt lediglich die Daten von der View und gibt diese ans model weiter....

Den Controller kannste als private klasse in deinem JFrame machen....
dann noch das Textfeld, wovon du Daten brauchst als private klassenvariable
deklarieren.

nun kannst du im Controller dir die Daten aus dem Textfeld holen...
die Businesslogik alla addStudent(...) usw, kommt ins model..
Die View kennt das model, womit du dann im Controller sowas wie
Code:
model.addStudent(...);

machen kannst...
 
V

_Vision_

Gast
Dann habe ich das MVC-Pattern nicht verstanden ;)

Also, ich habe jetzt folgendes verstanden(glaube ich zumindest):

Ich habe 4 Klassen Thema, Student, Kenntniss und Adresse - das sind meine Daten.
Objekte dieser Klassen werden nicht im Controller verwaltet, sondern ich mache mir z.B. eine Klasse Model,
die dann diese Objekte, z.B. ArrayList studenten = new ArrayList; ... verwaltet und auch die Zugriffsoperationen auf diese, z.B.
Code:
public void addStudent(String matrikelnummer,
				 String vorname,
				 String nachname,
				 String strasse,
				 String nr,
				 String plz,
				 String ort) {
	Adresse adresse;
	Student student;
		
	adresse = new Adresse(strasse, nr, plz, ort);
	student = new Student(matrikelnummer, vorname, nachname, adresse);
	this.studenten.add(student);
}

oder bleibt die dann doch im Controller?

Das JFrame hat 2 Bereiche.
Oben habe ich JButton, um Befehle auszuführen und je nach Befehl, verändert sich der untere
Bereich - ein anderes ChildFrame wird angezeigt.

Wenn ich Dich jetzt verstanden habe, dann mache ich mir für jedes ChildFrame je nach Befehl eine Klasse(abgeleitet aus JInternalFrame), in der ich das jeweilige Aussehen(Textfelder, Buttons, ...) beschreibe und für die relevanten Componenten private Klassenvariablen anlege, die ich dann später problemlos auslesen kann?

Danke
 

ronny

Bekanntes Mitglied
Naja, der generelle Aufbau sollte ungefähr so sein:

- Businessobjekt (z. B. Student mit getter und setter (Adresse, Name usw.))

- Managerklasse (kann alles mögliche sein, bei dir: StudentenAccessManager z. B... der übernimmt Aufgaben, wie addStudent(), updateStudent(), deleteStudent(), getStudentById(), getAllStudenten() usw.; manche nennen das DAO..)

- Model (könnte ne Methode haben wie z. b. zeigeMirAlleStudenten() weil du auf der Gui z. B. ne Liste hättest, die dir alle Studenten anzeigen soll... Das Model macht jetzt nix anderes wie getAllStudenten() aufzurufen... Wenn das model alles hat, benachrichtigt es alle Views, die registriert sind, und gibt die neuen Daten mit, müssen die Daten irgendwie noch aufbereitet werden, dann passiert das hier... )

- View (zeigt alle Daten an)

- Controller (Holt die Daten von der View und gibt diese ans Model weiter... ist meist ne private Klasse deiner View.)


Der Guiaufbau ansich mit JFrames etc. in eigenen Klassen usw. hat mit diesem generellen Prinzip erstmal nix zu tun... das ist nochmal ne andere Baustelle mit ganz anderen Möglichkeiten.

Dir würde ich empfehlen, die Gui erstmal in einer Klasse zu lassen und schauen, ob der Datenaustausch irgendwann funktioniert... Wenn du dann mehr machen willst (Gui wird immer komplexer), kannst du anfangen, die Gui nochmal zu strukturieren und zu unterteilen.... nicht alles auf einmal. :)

Die ganze Thematik is net sooo easy und braucht sicher etwas Übung bis alles funzt....
Einfach ausprobieren... aber die Grundstruktur sollte vorhanden sein... sonst wirds übel! :wink:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
P JavaFX Zugriff auf Fenster/Layout-Container in eigenen Klassen AWT, Swing, JavaFX & SWT 5
J JavaFX JavaFX Splitpane - Zugriff auf die Controller der Elemente AWT, Swing, JavaFX & SWT 8
karlmasutra JavaFX Zugriff auf eine erzeugte Scene aus einer anderen Klasse AWT, Swing, JavaFX & SWT 1
L JavaFX Zugriff auf HostServices im FXML Controller AWT, Swing, JavaFX & SWT 1
K JTable in extra Klasse, Zugriff in einer anderen klasse nicht möglich AWT, Swing, JavaFX & SWT 26
J JavaFX Zugriff auf Child AWT, Swing, JavaFX & SWT 4
J JavaFX Zugriff auf FXML-Variablen eines anderen Controllers AWT, Swing, JavaFX & SWT 2
C JavaFX Zugriff auf TextField aus einer anderen Klasse AWT, Swing, JavaFX & SWT 4
wolfgang63 JavaFX Zugriff auf Guiobjekte die über FXML erstellt wurden AWT, Swing, JavaFX & SWT 2
F JavaFX Zugriff auf Controller Methode von einer normalen Klasse aus AWT, Swing, JavaFX & SWT 4
C JavaFX Zugriff auf TableView AWT, Swing, JavaFX & SWT 2
D JavaFX Zugriff auf Controller erlangen AWT, Swing, JavaFX & SWT 4
L Zugriff auf JavaFX Controls AWT, Swing, JavaFX & SWT 3
G JavaFX NullPointerException bei Zugriff auf FXML Element AWT, Swing, JavaFX & SWT 0
P Event Handling Anfängerfrage: ActionEvent bekommt kein Zugriff auf Objekt AWT, Swing, JavaFX & SWT 3
H SWT NullPointerException bei Zugriff auf Variablen des Hauptfensters AWT, Swing, JavaFX & SWT 6
K Zugriff auf Label und Ereignisbehandlung durch zwei Handlerklassen AWT, Swing, JavaFX & SWT 3
B Zugriff auf JFrame obwohl die Klasse abgeleitet ist AWT, Swing, JavaFX & SWT 3
V JTable: Zugriff auf einzelne Zellen AWT, Swing, JavaFX & SWT 4
L Swing ActionListener zugriff auf bestimmte Elemente AWT, Swing, JavaFX & SWT 3
A Swing Zugriff auf JButton AWT, Swing, JavaFX & SWT 2
M Zugriff auf Variablen eines Objektes ohne sie auf static zu setzen AWT, Swing, JavaFX & SWT 9
I Swing Zugriff auf ein Objekt AWT, Swing, JavaFX & SWT 2
M Zugriff paralleler Threads auf selbes JTextPane AWT, Swing, JavaFX & SWT 6
M JTree mit eigenen Knoten - Zugriff auf Daten AWT, Swing, JavaFX & SWT 6
N zugriff auf frame AWT, Swing, JavaFX & SWT 5
N Swing Zugriff JButton auf JTree AWT, Swing, JavaFX & SWT 4
D Zugriff auf Instanz der GUI AWT, Swing, JavaFX & SWT 3
E Swing DB Zugriff mit JProgressBar?! AWT, Swing, JavaFX & SWT 8
R Zugriff auf Model im MVC-Design aus SwingWorker heraus AWT, Swing, JavaFX & SWT 3
H Zugriff JPanel AWT, Swing, JavaFX & SWT 3
D Swing Storage von / Zugriff auf und durch Actions AWT, Swing, JavaFX & SWT 5
S this-Zugriff auf Container höherer Ebene AWT, Swing, JavaFX & SWT 2
S Swing Zugriff auf Polyline in Grafik AWT, Swing, JavaFX & SWT 4
E Swing Zugriff auf Attribute eines JFrames über einen JDialog AWT, Swing, JavaFX & SWT 2
J Zugriff auf HtmlPanel sperren AWT, Swing, JavaFX & SWT 3
D JTree - Zugriff auf Nodes mit Object AWT, Swing, JavaFX & SWT 6
R Zugriff auf Component um addComponentListener() aufzurufen AWT, Swing, JavaFX & SWT 4
O Zugriff auf PreferenceStore aus der Business-Logik-Schicht? AWT, Swing, JavaFX & SWT 11
S NumberFormatException beim Zugriff auf Leeres JTextField AWT, Swing, JavaFX & SWT 8
S Zugriff auf statische Var in MouseEvent -> Warnung AWT, Swing, JavaFX & SWT 6
M Fehler beim Zugriff von awt-KeyListener auf swt-Shell AWT, Swing, JavaFX & SWT 2
S Zugriff auf Elemente funktioniert mit SWING nicht mehr AWT, Swing, JavaFX & SWT 5
X Zugriff auf "Oberparents" ? AWT, Swing, JavaFX & SWT 4
J JTextArea wird nicht aktualisiert bei Zugriff von außerhalb AWT, Swing, JavaFX & SWT 2
O DB-Zugriff + wie darstellen? AWT, Swing, JavaFX & SWT 6
F Problem bei Zugriff auf ComboBox Item AWT, Swing, JavaFX & SWT 4
G Zugriff auf JTextField AWT, Swing, JavaFX & SWT 2
J Zugriff auf "dynamisch erzeugte" JTextFields AWT, Swing, JavaFX & SWT 2
J Zugriff auf letzte Klasse AWT, Swing, JavaFX & SWT 4
M Zugriff auf Methoden aus einem ActionListener AWT, Swing, JavaFX & SWT 2
F Zugriff auf Oberfläche bzw Trennung GUI / Logik AWT, Swing, JavaFX & SWT 3
I selectedText: Wie bekomme ich Zugriff auf den Text? AWT, Swing, JavaFX & SWT 4
G Zugriff auf Bilder verweigern AWT, Swing, JavaFX & SWT 7
H Zugriff auf die Farbwerte eines Bildes AWT, Swing, JavaFX & SWT 6
G Zugriff auf TextField geht nicht AWT, Swing, JavaFX & SWT 5
G zugriff auf benutzeroberflächenelemente AWT, Swing, JavaFX & SWT 4
M ActionListener-Zugriff durch mehrere Frames AWT, Swing, JavaFX & SWT 5
M Zugriff auf ComboBox! AWT, Swing, JavaFX & SWT 17
G Excel-Zugriff über POI: wohin mit dem Package? AWT, Swing, JavaFX & SWT 4
B Zugriff von Toolbar auf zugehörigen Frame AWT, Swing, JavaFX & SWT 6
O JTabbedPane - Zugriff auf die Elemente eines Tabs AWT, Swing, JavaFX & SWT 4
O JFileChooser - Zugriff auf Dateiname-Feld und Save-Button? AWT, Swing, JavaFX & SWT 6
E Zugriff auf JTextField nach Buttonklick AWT, Swing, JavaFX & SWT 6
MiMa JavaFX Runtime components are Missing??? AWT, Swing, JavaFX & SWT 3
F JavaFX JavaFX Builden: JavaFX Runtime components are missing AWT, Swing, JavaFX & SWT 0
K Swing JScrollPane wird nicht angezeigt wenn man Components darstellt. AWT, Swing, JavaFX & SWT 2
K JDialog zeigt Components nicht an AWT, Swing, JavaFX & SWT 3
X Alle Components eines JPanels Enablen AWT, Swing, JavaFX & SWT 7
G Components erscheinen erst bei Änderung des Frames AWT, Swing, JavaFX & SWT 3
A Swing Liste von komplexen Components AWT, Swing, JavaFX & SWT 2
xehpuk Swing Erst Components, dann Container zeichnen AWT, Swing, JavaFX & SWT 2
I LayoutManager CardLayout mit anonymen Components AWT, Swing, JavaFX & SWT 4
J remove() components bei event von JComboBox AWT, Swing, JavaFX & SWT 2
M Special design of Swing components AWT, Swing, JavaFX & SWT 14
hdi dynamische Iteration über Components AWT, Swing, JavaFX & SWT 3
V components nordwest alignen AWT, Swing, JavaFX & SWT 4
P Components überlagern AWT, Swing, JavaFX & SWT 8
B HTML in Swing Components (JLabel) AWT, Swing, JavaFX & SWT 7
S 2 components & 1 button AWT, Swing, JavaFX & SWT 4
hdi Fenster mit variablen Components AWT, Swing, JavaFX & SWT 3
M icons für die java.swing components wie jbutton etc AWT, Swing, JavaFX & SWT 5
K Components auf Codeebene vor reverse engineering schützen? AWT, Swing, JavaFX & SWT 16
K Layout - Components richtig setzen AWT, Swing, JavaFX & SWT 9
G fullscreen GUI - eigene components? AWT, Swing, JavaFX & SWT 2
G Components form AWT, Swing, JavaFX & SWT 3
P Components updaten AWT, Swing, JavaFX & SWT 2
masta // thomas GridBagLayout - Zwischenraum zw. Components AWT, Swing, JavaFX & SWT 7
G components unbeweglich machen AWT, Swing, JavaFX & SWT 3
conan2 getFontMetrics() außerhalb des Components AWT, Swing, JavaFX & SWT 7
F Components aneinander AWT, Swing, JavaFX & SWT 2
W Components Focus mit TAB-Taste VERTIKAL bewegen AWT, Swing, JavaFX & SWT 4
W JTable und mehrere Components in einer Zelle AWT, Swing, JavaFX & SWT 4
meez Striche rund um Components AWT, Swing, JavaFX & SWT 6
A Components in einer ArrayList aus anderer Klasse speichern AWT, Swing, JavaFX & SWT 8
K MouseEvents vor den Components abfangen? AWT, Swing, JavaFX & SWT 4
M Seltsame Exception bei setVisible(true) Methode in einem JFrame AWT, Swing, JavaFX & SWT 2
MartinNeuerlich Kann mir jemand, der einen Mac mit einem m1 oder m2-Chip hat, eine POM geben mit der Javafx-Fullscreen beim Mac mit m-Chip funktioniert? AWT, Swing, JavaFX & SWT 1
W 2 JTables in einem Swing-Fenster? AWT, Swing, JavaFX & SWT 5
J JavaFx PDF in einem Element in einem Fenster anzeigen. AWT, Swing, JavaFX & SWT 11

Ähnliche Java Themen

Neue Themen


Oben