Hallo zusammen!
Ich habe ein recht merkwürdiges Problem. Und zwar wird aus irgendeinem Grund eine Methode undendlich oft ausgeführt, was dann letztendlich zu einem Speicherproblem führt.
Diese Methode wird aufgerufen:
Die einzige Methode, welche die obengeannte aufruft ist diese:
Die Ausgabe, welche dieses Programm nun liefert bringt mich echt zum Grübeln:
Kann sich das also jemand erklären?
*gruß*
Timo
PS: ich arbeite mit java 1.4.2
Ich habe ein recht merkwürdiges Problem. Und zwar wird aus irgendeinem Grund eine Methode undendlich oft ausgeführt, was dann letztendlich zu einem Speicherproblem führt.
Diese Methode wird aufgerufen:
Code:
public void objectMoved(Point p, String caller){
this.point = p;
System.out.println("objectMoved was called from:= "+caller);
//dosomeCalculations
}
Die einzige Methode, welche die obengeannte aufruft ist diese:
Code:
private synchronized void editorMouseDragged(Point p,String caller){
System.out.println("MouseDragged 1, caller = "+caller);
if(selectedObj == null) return;
System.out.println("MouseDragged 2, item:= "+selectedObj);
if((oldxPos != -1)&&(oldyPos!= -1)){
int dx = oldxPos - p.x;
int dy = oldyPos - p.y;
xPos -= dx;
yPos -= dy;
}
System.out.println("MouseDragged 3");
oldxPos = p.x;
oldyPos = p.y;
System.out.println("MouseDragged 4");
selectItem.objectMoved(new Point(xPos,yPos),"editorMouseDragged");
System.out.println("MouseDragged 5");
}
repaint();
}
Die Ausgabe, welche dieses Programm nun liefert bringt mich echt zum Grübeln:
Irgendwann sprengen diese aufrufe aber den Heap. Es bringt auch nichts, diesen hochzusetzen. Und selbst wenn, würde dies das Problem ja auch nur umgehen...MouseDragged 1, caller = mouseListener
MouseDragged 2, item:= point1
MouseDragged 3
MouseDragged 4
objectMoved was called from:= editorMouseDragged
objectMoved was called from:= editorMouseDragged
... unzählige aufrufe
...
objectMoved was called from:= editorMouseDragged
MouseDragged 5
Kann sich das also jemand erklären?
*gruß*
Timo
PS: ich arbeite mit java 1.4.2