Vielen Dank für die Aufnahme! Ich habe ein Problem beim Hinzufügen Fenstern zu einer LinkedList aus einer anderen Klasse.
Es sollen bestimmte Fenster, die über mehrere Klassen erzeugt werden, zu einer LinkedList hinzugefügt werden. Alle Klassen greifen auf die Klasse EventHandler zu, der das Öffnen und Schließen dieser Fenster regelt. Deshalb habe ich dies auch als Event genutzt (funktioniert auch). Die LinkedList befindet sich jedoch in der Klasse Main und über die dort definierten Methoden können Daten hinzugefügt oder entfernt werden. Der EventHandler greift auf die Main-Klasse zu, indem ein entsprechender Konstruktor definiert wird.
Das Problem ist jetzt, dass meine LinkedList zwar die neuen Fenster brav einliest, aber die alten Daten "vergisst" sobald die Methode EventHandler wieder aufgerufen wird.
Code der Klasse "Main":
Code der Klasse "EventHandler":
Es sollen bestimmte Fenster, die über mehrere Klassen erzeugt werden, zu einer LinkedList hinzugefügt werden. Alle Klassen greifen auf die Klasse EventHandler zu, der das Öffnen und Schließen dieser Fenster regelt. Deshalb habe ich dies auch als Event genutzt (funktioniert auch). Die LinkedList befindet sich jedoch in der Klasse Main und über die dort definierten Methoden können Daten hinzugefügt oder entfernt werden. Der EventHandler greift auf die Main-Klasse zu, indem ein entsprechender Konstruktor definiert wird.
Das Problem ist jetzt, dass meine LinkedList zwar die neuen Fenster brav einliest, aber die alten Daten "vergisst" sobald die Methode EventHandler wieder aufgerufen wird.
Code der Klasse "Main":
Java:
import java.awt.Window;
import java.util.LinkedList;
import javax.swing.JFrame;
public class Main {
private LinkedList WindowList = new LinkedList();
public void addFrame(Window w) {
WindowList.add(w);
System.out.println(WindowList.size());
}
public void removeFrame(Window w) {
WindowList.remove(w);
System.out.println(WindowList.size());
}
public LinkedList getWindowList() {
return WindowList;
}
}
Code der Klasse "EventHandler":
Java:
import java.awt.Window;
import java.awt.event.WindowEvent;
import java.util.ListIterator;
//Wird von verschiedenen Klassen als WindowListener implementiert
public class EvenHandler {
Main app = new Main();
public void windowOpened(WindowEvent e) {
Window w = e.getWindow();
app.addFrame(w);
}
public void windowClosing(WindowEvent e) {
Window w = e.getWindow();
app.removeFrame(w);
w.dispose();
}
}