Hallo,
ich habe eine Designfrage.
Ich bin dabei eine Applikation in mit Swing zu entwickeln und habe bisher Erfahrung mit SpringMVC, und möchte daher auch in Swing im MVC-Style entwickeln.
Nun zur Applikation:
Bevor die eigentliche Applikation startet, soll der User in einem extra JFrame sich mittels Benutzername/Passwort authentifizieren.
Nachdem diese Anmeldung geglückt ist, soll dieses JFrame verschwinden und die eigentliche Anmeldung - ein weiteres JFrame - soll sich öffnen.
Mein Design sieht bisher so aus:
1. ich habe ein LogonModel welches Observable erweitert.
- das LogonModel hat 2 private Variablen username+passwort und kümmert sich um das abgleichen dieser mit dem Backend über ein DAO via der Funktion doLogin().
- Stimmen username und passwort nicht überein, wird eine Fehlermeldung definiert und diese mittels notifyObservers(error) an die View zur Darstellung gegeben (z.B. Username leer, Passwort leer, Username oder Passwort falsch). Im Erfolgsfall wird eine leere Fehlermeldung zurück gegeben.
2. ich habe eine LogonView welche Observer implementiert.
- mit der update() Funktion wird die Fehlermeldung in einem sonst leeren JLabel dargestellt.
3. ich habe einen Controller welcher ActionListener implementiert.
- mittels actionPerformed wird username und passwort des Models gesetzt, und dann doLogin() des Models aufgerufen.
Beim Startup werden nun LogonModel und LogonView instanziert. LogonView wird als Observer beim LogonModel hinzugefügt.
Dem Controller wird LogonModel und LogonView hinzugefügt, und dem Button wird der Controller zugewiesen.
Das funktioniert alles soweit wunderbar. Nur frage ich mich nun.... wo bzw. wie soll ich nun die LogonView verstecken, und eine neue MainView öffnen?
Eine Möglichkeit welche mir gerade kommt ist:
1.) Ich könnte die MainView auch bereits komplett fertig bauen, jedoch mit setVisible(false).
2.) Dann könnte ich MainView auch als einen weiteren Observer dem LogonModel hinzufügen.
3.) Sollte dann das LogonModel mit einer leeren Fehlermeldung ankommen (=Logon erfolgreich) verstecke ich im update() des LogonScreen selbigen, und im MainScreen.update() wird dann setVisible(true) ausgefuehrt.
Irgendwie finde ich das aber nicht wirklich "sauber" und frage mich, ob es nicht eine bessere Möglichkeit gibt das beschriebene Problem zu loesen...
Gruesse
ich habe eine Designfrage.
Ich bin dabei eine Applikation in mit Swing zu entwickeln und habe bisher Erfahrung mit SpringMVC, und möchte daher auch in Swing im MVC-Style entwickeln.
Nun zur Applikation:
Bevor die eigentliche Applikation startet, soll der User in einem extra JFrame sich mittels Benutzername/Passwort authentifizieren.
Nachdem diese Anmeldung geglückt ist, soll dieses JFrame verschwinden und die eigentliche Anmeldung - ein weiteres JFrame - soll sich öffnen.
Mein Design sieht bisher so aus:
1. ich habe ein LogonModel welches Observable erweitert.
- das LogonModel hat 2 private Variablen username+passwort und kümmert sich um das abgleichen dieser mit dem Backend über ein DAO via der Funktion doLogin().
- Stimmen username und passwort nicht überein, wird eine Fehlermeldung definiert und diese mittels notifyObservers(error) an die View zur Darstellung gegeben (z.B. Username leer, Passwort leer, Username oder Passwort falsch). Im Erfolgsfall wird eine leere Fehlermeldung zurück gegeben.
2. ich habe eine LogonView welche Observer implementiert.
- mit der update() Funktion wird die Fehlermeldung in einem sonst leeren JLabel dargestellt.
3. ich habe einen Controller welcher ActionListener implementiert.
- mittels actionPerformed wird username und passwort des Models gesetzt, und dann doLogin() des Models aufgerufen.
Beim Startup werden nun LogonModel und LogonView instanziert. LogonView wird als Observer beim LogonModel hinzugefügt.
Dem Controller wird LogonModel und LogonView hinzugefügt, und dem Button wird der Controller zugewiesen.
Das funktioniert alles soweit wunderbar. Nur frage ich mich nun.... wo bzw. wie soll ich nun die LogonView verstecken, und eine neue MainView öffnen?
Eine Möglichkeit welche mir gerade kommt ist:
1.) Ich könnte die MainView auch bereits komplett fertig bauen, jedoch mit setVisible(false).
2.) Dann könnte ich MainView auch als einen weiteren Observer dem LogonModel hinzufügen.
3.) Sollte dann das LogonModel mit einer leeren Fehlermeldung ankommen (=Logon erfolgreich) verstecke ich im update() des LogonScreen selbigen, und im MainScreen.update() wird dann setVisible(true) ausgefuehrt.
Irgendwie finde ich das aber nicht wirklich "sauber" und frage mich, ob es nicht eine bessere Möglichkeit gibt das beschriebene Problem zu loesen...
Gruesse