Servus,
ich hab da ein kleines Problem. Wir sollen für die Uni MineSweeper nachbauen, wie man das aus Windows kennt. Leider alles mit AWT-Komponenten, Swing kommt erst nächstes Mal dran. Wir haben uns überlegt, grau in grau wie im Original ist langweilig, also wollten wir Bilder einbauen. Also ist jedes Kästchen halt von der Klasse Canvas abgeleitet.
Wenn nun ein neues Spielfeld erstellt wird, werden diese ganzen Canvas-Objekte erstellt, mit setBounds() deren Position festgesetzt und dann per NullLayout auf einem Panel platziert. Das Problem:
Wählt man eine Feldgröße mit z.B. 50x50 aus oder erstellt man 2 mal ein Profi-Spiel (30x16), dann sieht man noch, wie einige der Canvas-Objekte auf dem Spielfeld erscheinen, dann ist aber Schluss. Das Prog stürzt ab, und nimmt, wenn nicht gleich ganz Windows weg ist, auch den Eclipse mit.
Alle "alten" Objekte werden aber vor einem neuen Spiel von allen Referenzen befreit, das heißt, der GarbageCollector könnte sie wegräumen.
Mitlweile haben wir es umgeschrieben, dass bei einem neuen Spiel mit alter Größe die Objekte nur umsortiert werde, also setBounds() wird aufgerufen, neue Koordinaten und dann repaint(). Das geht ohne Probleme.
Es werden auch alle add()-Aufrufe für alle Komponenten ausgeführt.
Im TaskManager sehe ich, dass das Prog immer knapp 20MB Speicher braucht, fast unabhängig von der Spielfeldgröße.
Alle Bilder werden mit .getImage() erzeugt, nicht mit createImage().
Hat jemand ne Idee, woran das liegt? Oder womit ich das verhindern könnte?
Vielen Dank für die Mühe,
MfG, Tim
ich hab da ein kleines Problem. Wir sollen für die Uni MineSweeper nachbauen, wie man das aus Windows kennt. Leider alles mit AWT-Komponenten, Swing kommt erst nächstes Mal dran. Wir haben uns überlegt, grau in grau wie im Original ist langweilig, also wollten wir Bilder einbauen. Also ist jedes Kästchen halt von der Klasse Canvas abgeleitet.
Wenn nun ein neues Spielfeld erstellt wird, werden diese ganzen Canvas-Objekte erstellt, mit setBounds() deren Position festgesetzt und dann per NullLayout auf einem Panel platziert. Das Problem:
Wählt man eine Feldgröße mit z.B. 50x50 aus oder erstellt man 2 mal ein Profi-Spiel (30x16), dann sieht man noch, wie einige der Canvas-Objekte auf dem Spielfeld erscheinen, dann ist aber Schluss. Das Prog stürzt ab, und nimmt, wenn nicht gleich ganz Windows weg ist, auch den Eclipse mit.
Alle "alten" Objekte werden aber vor einem neuen Spiel von allen Referenzen befreit, das heißt, der GarbageCollector könnte sie wegräumen.
Mitlweile haben wir es umgeschrieben, dass bei einem neuen Spiel mit alter Größe die Objekte nur umsortiert werde, also setBounds() wird aufgerufen, neue Koordinaten und dann repaint(). Das geht ohne Probleme.
Es werden auch alle add()-Aufrufe für alle Komponenten ausgeführt.
Im TaskManager sehe ich, dass das Prog immer knapp 20MB Speicher braucht, fast unabhängig von der Spielfeldgröße.
Alle Bilder werden mit .getImage() erzeugt, nicht mit createImage().
Hat jemand ne Idee, woran das liegt? Oder womit ich das verhindern könnte?
Vielen Dank für die Mühe,
MfG, Tim