Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Da der Code etwas zu umfangreich ist versuche ich es erstmal allgemein zu beschreiben villeicht kann man mir ja da shcon helfen. folgendes: ich habe in einer klasse einem vektor per zufall zwei verschiedene arten von objekten an zufälligen stellen zugewiesen, in einer anderen methode steht nun wiederrum wie sich die objekte im nächstens chritt bewegen sollen.
nun möchte ich das ganze in einem applet grafisch ausgeben. ich kann den vektor lesen, da sklappt alles wunderbar. ich habe einen button angelegt der dne nächsten schritt einleiten soll dmait sich die objekte weiterbewegen. klicke ich den allerdings an, benutze ich repaint und so wird ein komplett neuer vektor erstellt. wie kann ich also auf den vektor zugreifen das ernicht bei jedem repaint erneuert wird?
"repaint" führt irgendwann dazu, dass "paint" aufgerufen wird. Du erstellst deinen Vector nicht gerade in "paint", oder?
Wirf mal den Debugger deiner IDE an (wenn du keine hast, oder eine ohne Debugger; such nach Eclipse, Netbeans oder JBuilder - die können das alle), setz einen Breakpoint an der Stelle an der die Vectoren erzeugt werden - und beobachte von wo der Aufruf kommt :wink:
Dafür ist die Methode gedacht: (init = initialize).
In der paint-Methode(paintComponent,...) sollten niemals Zustandsänderungen
vorgenommen werden, da du nicht steuern kannst, wann diese Methode aufgerufen
wird. Beispielsweise wird sie immer aufgerufen, wenn ein Teil der Komponente
verdeckt war(nicht vollständig auf dem Monitor).
Darum prinzipielle Vorgehensweise.
1) Zustandsänderung im action-Listener ausführen (oder via Timer wenn Animation)
2) Nach Beendigung der Berechnungen mit repaint() eine Aufforderung zum Neuzeichnen geben.
3) In der paint-Methode nur den aktuellen Zustand berücksichtigen.
hehe ja schon klar
naja der vektor wird ja eigentlich ständig verändert, da ich die werte darin ja pro schritt verändere. ich habe eine methode um den vektor anzulegen und eine um den "nächsten schritt" einzuleiten bei dem die objekte neue koordinaten bekommen. dabei rufe ich die methode zur erstellung des vektors in der init methode auf und die zur veränderung nach dem der button angeklickt wurde... soweit richtig gedacht?
hehe ja schon klar
naja der vektor wird ja eigentlich ständig verändert, da ich die werte darin ja pro schritt verändere. ich habe eine methode um den vektor anzulegen und eine um den "nächsten schritt" einzuleiten bei dem die objekte neue koordinaten bekommen. dabei rufe ich die methode zur erstellung des vektors in der init methode auf und die zur veränderung nach dem der button angeklickt wurde... soweit richtig gedacht?
danke schonmal für die tips es läuft jetzt halbwegs, ich habe die ausgabe der elemente in den action listener geschrieben und es klappt so wie es klappen soll, zumidnest hinten rum. das ist ziemlich komisch die ersten paar male wenn ich den button klicke wird das feld nur ganz kurz angezeigt und sofort "übermalt" und nach ein paar mal wird es dann ganz angezeigt und es funktioniert so wie es soll...komisch