# Fenster schließen und ein anderes öffnen



## edsie2011 (20. Jan 2012)

Hallo ich habe ein Fenster Client und sobald der user sich eingelogt hat soll das Fenster sich schließen und das Bentuzer Fenster öffnen


```
try {
            LogIn lg = new LogIn();
            String Id = "";
            String Name = "";
            Name = this.BenutzertField1.getText();

           char[] zeichen = PasswordField1.getPassword();
           String Passwort = new String(zeichen);


           String idUser = "";
           idUser = lg.user( Name, Passwort);
            
                           
                        if(!"".equals(idUser)){
                            
                            
                            
                            Client cl = new Client();
                            cl.MyWinClient = Name;
                            cl.setVisible(true);//hier wird das Client Fenster geöffnet
                            lg.setVisible(false);//eigentlich sollte er gleichzeitig hier das Fenster LogIn schließen?
                            
                            
                        }
        } catch (IOException_Exception ex) {
            Logger.getLogger(LogIn.class.getName()).log(Level.SEVERE, null, ex);
        }
```


----------



## jgh (20. Jan 2012)

also da man aus dem Codeausschnitt nicht viel erkennen kann, mal ein Versuch...

[java=19]

                            Client cl = new Client();
                            cl.MyWinClient = Name;
                            cl.setVisible(true);//hier wird das Client Fenster geöffnet
                            setVisible(false);//eigentlich sollte er gleichzeitig hier das Fenster LogIn schließen?[/code]


----------



## irgendjemand (20. Jan 2012)

hmm .. schlechtes design ...
verwende J/Panels ... dann tauschst du im J/Frame einfach nur das angezeigte aus ...


----------



## DerFeivel (20. Jan 2012)

irgendjemand hat gesagt.:


> hmm .. schlechtes design ...
> verwende J/Panels ... dann tauschst du im J/Frame einfach nur das angezeigte aus ...



Du ersetzt also den Inhalt eines Fensters, das die Darstellung eines Login-Screens beinhalten soll, durch die Darstellung der eigentlichen Business-Logik.
Du änderst dann i.d.R. vermutlich auch noch die Größe des Fensters, setzt für das neue Fenster noch ein Toolbar und änderst ggf. noch andere LookAndFeel-Eigenschaften.

Ohne dir Nahe treten zu wollen, halte ich diesen Vorschlag nicht für optimal.


----------



## Meru (20. Jan 2012)

Ich finde diesen Vorschlag gar nicht doof, im Gegenteil, ich selbst finde so etwas gut.

Wir haben bei uns das auch so gehalten, dass ein großes JFrame aufgeht und die allgemeine Struktur schon angzeigt wird. Auch sind da schon Sachen wie JMenu ala "About" oder aber Einstellungsmöglichkeiten für die Sprache/Schriftgrößen etc.
Auch die Toolbar wird schon angezeigt um zum Beispiel die Schaltfläche "Schließen" mit anzubieten (nach Login werden diese einfach erweitert).
Einzig der Menübaum/Favoriten(JMenus)/Masken werden nicht dargestellt. Aber im eigentlichen Content-Panel, also da wo nachher die Masken angezeigt werden, ist das LoginPanel mit raufgeknallt und verschwindet dann nach erfolgreichem Anmelden.

Und eine Vermischung von Buisness-Logik findet da auch nicht statt, weil diese zum Beispiel bei uns über ein WebServer ausgelagert ist. Es ist vielmehr die Frage, wie man das vernünftig organisiert (Schnittstellen etc)


----------



## jgh (20. Jan 2012)

Wer sich den Quellcode des TO´s anschaut, sollte nicht über Design, Pattern´s, usw nachdenken, sondern über Grundlegendes...und ob man ein LogIn-Frame, Log-In-Panel, LogIn-Dialog oder was auch immer nimmt, ist imho noch relativ egal.


----------



## DerFeivel (20. Jan 2012)

Ich habe nicht gesagt, dass der Vorschlag doof ist .


Irgendjemand hat geschrieben applaus::toll, dass es schlechtes Design ist, was ich absolut nicht finde.
Für die Anforderungen eures Projektes ist es sicherlich zweckmässig. Der Einwand bezüglich des Designs war aber m.E. allgemein. Und allgemein, finde ich das recyclen von Fenstern suboptimal.



Die 'fachliche' Anforderung war hier:

- Login-Fenster darstellen
- nach erfolgreichem Login schließen
- Anwendungsfenster öffnen (das meinte ich im Übrigen mit Business-Logik)


Also schon 'fachlich' eine Trennung von Login-Fenster und Anwendungsfenster.

Da jetzt ein Fenster zu recyclen halte ich für preemptive optimization (d.h. nicht vernünftig).


Tante Edith sagt: jgh hat recht. (Obwohl man den leuten gleich am Anfang sagen kann, wie man's richtig machen soll  )


----------



## edsie2011 (20. Jan 2012)

jgh hat gesagt.:


> also da man aus dem Codeausschnitt nicht viel erkennen kann, mal ein Versuch...
> 
> [java=19]
> 
> ...



Danke das hat geklappt!!!:toll::toll::applaus::applaus:


----------



## jgh (20. Jan 2012)

schön 

aber grundsätzlich wirst du wahrscheinlich bald an die nächsten Probleme stoßen...und dann ist es schon wichtig, dass du weißt was du machst. Anscheinend ist dein LogIn ja ein (J)Frame und die Klasse aus der der Quellcode stammt auch? Also ein wenig Ordnung solltest du noch in dein Programm reinbringen.


----------



## Kakulukiam21 (24. Jan 2012)

Wird mit 


```
Client cl = new Client();
                            cl.MyWinClient = Name;
                            cl.setVisible(true);//hier wird das Client Fenster geöffnet
                            setVisible(false);//eigentlich sollte er gleichzeitig hier das Fenster LogIn schließen?
```

nicht einfach das Fenster "nicht sichtbar" gemacht? 


Ich habs bei mir so:

```
Klasse tier = new Klasse();
				tier.anzeige();
				JFrame.dispose();
```

Oder macht des kein Unterschied?


----------

