Ungebetene Fenster laufen im Hintergrund

L

LaraKorn

Ich hab ein seltsames Problem. Wenn ich mein Fenster öffne, schließe, öffne, wieder schließe, schießt es gleich 2x:
Freundesliste wird geladen ...
FreundeFenster - geschloßen
Freundesliste wird geladen ...
FreundeFenster - geschloßen
FreundeFenster – geschloßen
und das geht immer so weiter: 3x, 4x, ....

Warum laufen bei mir mehrere Fenster im Hintergrund? Das zersprengt mir die ganze weitere Anwendung. Schieß ich die Fenster nicht richtig?

----------------------
public void schliessen(){
f.dispose();
System.out.println("FreundeFenster - geschloßen");
}
----------------------
----------------------
public static JButton abbrechenListe= new JButton("Abbrechen");
public static void onAbbrechenListe() {
liste.schliessen();
listeInt = 0;
}
----------------------
----------------------
public static JButton listeSehen = new JButton("Freundeliste einsehen");
public static void onListeSehen() throws FileNotFoundException, IOException, ClassNotFoundException{
if( listeInt == 0){
liste.oeffneFenster();
listeInt = 1;
}else{
JOptionPane.showMessageDialog (null, "Sie haben das Fenster schon geöffnet!", "Fehlender Name", JOptionPane.ERROR_MESSAGE);
}
}

----------------------
 
Hi,
ansich ist an dispose nichts auszusetzen... Mehr kann ich aber anhand deienr Codeschnippsel auch nicht sagen. Wie sieht die gesamte Klasse aus? Und bitte setze deinen Code das nächste Mal in [ JAVA]-Tags.

Pauschal kann man sagen, dass solche Fehler meistens in irgendeinem Objektekonfilkt entstehen.
Das heißt, es wird noch irgendwo eine Instanz aufgerufen, von der du schon dachtest, sie wäre aufgeräumt. Deshalb ist es wichtig, den ganzen Code zu sehen.
Dann wird dir sicher auch weitergeholfen...
Ciao
DosCoder
 
Ich hab ein seltsames Problem. Wenn ich mein Fenster öffne, schließe, öffne, wieder schließe, schießt es gleich 2x:

Moin,

es "schießt" :confused:
Schon mal mit "Hände hoch" probiert ? :-)

Nein - im Ernst:
Was genau meinst Du damit? Wie kann es zweimal geschlossen werden, wenn es nur einmal geöffnet ist :confused::confused:
Geht es darum, dass die Methode "schliessen" doppelt aufgerufen wird ?

Hast Du mal im Debugger nach den entspr. Aufrufen geschaut? Wenn wirklich ZWEI Fenster offen sein sollten, müssten sie ja auch beide irgendwo geöffnet werden .... siehst Du denn zwei Fenster auf der Oberfläche?

Gruß
Klaus
 
Also ich Programmiere noch nicht so lange.
Debugger hilft mir nicht wirklich weiter, weil in der Main Klasse nur das Hauptfenster geöffnet wird und dann alles weitere vom Hauptfenster gesteuert wird.

Ich versteh doch selber nicht, warum es mehrmals schließt. Es ist immer nur ein Fenster sichtbar. Aber es sind mehrere da, da bin ich mir sicher, weil die mir später die weitere Anwendung zerschießen. Ich kann in der Freundesliste Freunde auswählen und einladen. Wenn ich 2 Fenster in Hintergrund laufen habe, lädt das Programm diese Freunde 3x ein. :(

Ich hab schon in anderen Foren um Hilf gefragt. In einem hab ich sogar das ganze Programm rein gestellt: http://www.java-forum.org/awt-swing-swt/88449-wie-schliess-ich-ein-fenster-richtig.html#post558750

Leider bin ich hier nur Gast. Ich habe keine besondere Layout Auswahl für den Code. Darum schaut mal in das andere Forum den Post 9# an, da hab ich die 2 Klassen rein gestellt, wo ich glaube, dass dort der Fehler sein muss.
 
Hi,
Michael hat doch schon die Lösung herausgefunden: Button ist eine statische Klasse, mit jedem Aufruf von Button.addActionListener wird ein ActionListener hinzugefügt, ergo beim 1. Erzeugen der Form wird der Frame 1 mal geschlossen. Wenn du den Frame wieder aufbaust, wird zu Button ein ActionListener hinzugefügt, also hast du 2 mal die "Aktion Fenster" schließen.

Michael hat auch recht, was deinen Code angeht, insbesondere den statischen Button. Eine Notlösung (@andere Java-Programmierer: bitte seid mir jetzt nicht böse bei diesem Vorschlag) wäre, dem Button eine weitere statische Methode hinzuzufügen, nämlich eine reset-Methode, bei der die Listener gelöscht werden. Diese Methode rufst du dann bei jedem Erzeugen des Frames auf.
Wie genau die Methode aussieht kann ich dir nicht sagen, da ich als Gast bei "deinem" Forum nichts downloaden kann. :)

Bitte beachte in Zukunft die Regeln/Richtlinien der OOP, dann passiert sowas auch nicht, bzw ist es 1) einfacher, sich in den Code einzulesen und 2) letzendlich den Fehler zu finden. :)

Ciao
DosCoder
 
also müsste es doch reichen, wenn ich alle statische Button normal mache, oder?

Ja, ich muss mich wirklich entschuldigen, für mein chaotische Code. Ich bin noch Anfänger. Aber ich krieg schon den Dreh raus. ;)

Danke, dass du dir die Zeit für mich genommen hast. :)
 
Hi,
das ist korrekt. Ich dachte nur, dass die reset-Methode wesentlich weniger Aufwand benötigt, aber so ist es natürlich noch besser.

Ciao
DosCoder

PS: Hier mal die Java-Code-Conventions: Java-Blog-Buch
 
Hi,
aber jetzt hat es doch funktioniert, oder habe ich da was falsch verstanden? Im anderen Forum sagst du nämlich im letzen Post, dass alles funktioniert.
Ciao
DosCoder
 
Zurück