dispose()

seymenxkaya

Aktives Mitglied
Ich wollte bei öffnen eines neuen Fensters, dass sich das alte schließt. Dabei funktioniert nicht System.exit, sondern so wie ich heraus gefunden habe frame.dispose(). Jedoch funktioniert es nicht wie gewollt bzw. es schließt sich nichts.
Java:
Frame frame = new Frame();
                
                if (benutzer.contains("1") && passwort.contains("21")) {
                    
                    Name.setText(null);
                    PasswortEingabe.setText(null);
                    JOptionPane.showMessageDialog(null,"Sie haben sich erfolgreich angemeldet!","Login erfolgreich!",JOptionPane.PLAIN_MESSAGE);
                    meineÜbersicht = new Übersicht();
                    Übersicht.main(null);
                    frame.dispose();
Was habe ich falsch gemacht?
 

VfL_Freak

Top Contributor
Moin,

mal ganz davon abgesehen, dass Dein Code ziemlich unvollständig von Dir gepostet wurde, wage ich mal zu behaupten, dass der Schnipsel genau das macht was er soll!!

Nur ... Du erzeugst ein neues Objekt 'frame', machst aber nichts damit (kein add, kein Anzeigen), sondern disposed es lediglich!!
So es denn anzeigt würde, würdest Du auch da Schließen bemerken !

Oder fehlt doch noch entscheidender Coder ??? :rolleyes:
VG Klaus
 

seymenxkaya

Aktives Mitglied
mal ganz davon abgesehen, dass Dein Code ziemlich unvollständig von Dir gepostet wurde, wage ich mal zu behaupten, dass der Schnipsel genau das macht was er soll!!
Java:
JButton Login = new JButton("Login");
        Login.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                
                String passwort = PasswortEingabe.getText();
                String benutzer = Name.getText();
                Frame frame = new Frame();
                
                if (benutzer.contains("1") && passwort.contains("21")) {
                    
                    Name.setText(null);
                    PasswortEingabe.setText(null);
                    JOptionPane.showMessageDialog(null,"Sie haben sich erfolgreich angemeldet!","Login erfolgreich!",JOptionPane.PLAIN_MESSAGE);
                    meineÜbersicht = new Übersicht();
                    Übersicht.main(null);
                    frame.dispose();
                }
                else {
                    JOptionPane.showMessageDialog(null,"Falsche Benutzername und/oder Passwort","Login Error",JOptionPane.ERROR_MESSAGE);
                    Name.setText(null);
                    PasswortEingabe.setText(null);
                }
                
            }

        });
Das ist der komplette Code, aber denke mal das was ich geschrieben hatte hat gereicht,oder? Mit Frame hab ich nicht viel Ahnung, daher weiß ich leider nicht was da so rein kommt. Dachte es reicht so, weil ich es wo anders genauso gelesen hatte.
 

VfL_Freak

Top Contributor
wie bereits geschrieben: Du machst nix mit 'frame'!!

Was ist denn "Übersicht" ??
BTW: vermeide deutsche Umlaute in Variablennamen!!

VG Klaus
 

mihe7

Top Contributor
Mal abgesehen davon, dass die Zeile mit ziemlicher Sicherheit nicht so in Deinem Code steht, ist Deine Erklärung viel zu ungenau. Was ist z. B. "am Anfang"?

Du implementierst das ActionListener-Interface mit einer anonymen inneren Klasse. Eine solche Klasse hat (unter anderem) Zugriff auf die Instanzvariablen ihrer umgebenden Klasse.

In jeder Methode (also auch in den Methoden der anonymen inneren Klasse) kann man Variablen deklarieren, die auch genauso heißen dürfen wie die Instanzvariablen. Das sind jedoch völlig eigenständige Variablen, die mit der Instanzvariablen nichts mehr zu tun haben. Man könnte z. B. auch folgendes schreiben:
Java:
public class Test {
    private boolean value;

    public void show() {
        String value = "Titel";
        System.out.println(value);
    }
}
Wird in der Methode die Variable value verwendet, wird nicht mehr die Instanzvariable sondern die in der Methode deklarierte (lokale) Variable angesprochen. Die Instanzvariable existiert natürlich weiterhin, steht aber - bildhaft gesprochen - im Schatten der lokalen Variable . Dieses Überschatten wird als "variable shadowing" bezeichnet.

Wird die lokale Variable entfernt, wird natürlich sofort wieder die Instanzvariable verwendet.
 

seymenxkaya

Aktives Mitglied
Mal abgesehen davon, dass die Zeile mit ziemlicher Sicherheit nicht so in Deinem Code steht, ist Deine Erklärung viel zu ungenau. Was ist z. B. "am Anfang"?
Ich sollte erwähnen, dass ich mit dem Windowbuilder von Ecplise arbeite und dabei wird automatisch der Befehl
Java:
private JFrame frame;
erstellt.
 

Ähnliche Java Themen

Neue Themen


Oben