Ich versuche, vertikale und horizontale Linien zwischen zufällig ausgewählten Punkten auf einem Gitter und gegebenen Punkten aus einer Liste von Punkten zu zeichnen. Meine Newbie-Stil-Codierung scheint ihren Tribut in der App zu nehmen, die nach dem Klicken auf einen zufälligen Punkt auf dem Gitter zerbricht. dann wirft es das folgende OOME. Ich habe versucht, die Größe zu erhöhen. Das hat überhaupt nicht geholfen. irgendwelche Ideen ?? hier ist der Code-Schnipsel, dass it.i've sofar nur geschrieben Code für den Fall eines Click-Ereignisses im Osten von einem Punkt aus der ListeWie OOME-Ausnahme behandeln, wenn die Größe des Heap nicht funktioniert?
@Override
public void mouseClicked(MouseEvent e) {
boolean crossingLines = false;
Line l;
Point p = new Point(e.getX(), e.getY());
for (int i = 0; i < pointList.size(); i++) {
Rectangle rec = new Rectangle(pointList.get(i).x
* GAPBETWEENPOINTS
+ GAP
- TOLERANCE, pointList.y
* GAPBETWEENPOINTS
+ GAP
- TOLERANCE,TOLERANCE * 2,
CLICKTOLERANCE * 2);
if (rec.contains(p)) {
if (clickedEast(p, pointList.get(i)) == true) {
for (int j = i + 1; j < pointList.size(); j++) {
if (pointList.get(j).y
* GAPBETWEENPOINTS
+ GAP == pointList.get(i).y
* GAPBETWEENPOINTS
+ GAP
&& pointList.get(j).x
* GAPBETWEENPOINTS
+ GAP > pointList.get(i).x
* GAPBETWEENPOINTS
+ GAP) {
l = new Line(pointList.get(i),
pointList.get(j));
if (!lineList.contains(b)) {
for (int k = 0; k < lineList.size(); k++) {
if (lineList.get(k).getHorizontal() == false) {
if (pointList.get(i).x
* GAPBETWEENPOINTS
+ GAP < lineList
.get(k).getStartPoint().x
&& lineList.get(k)
.getStartPoint().x < pointList.get(j).x
* GAPBETWEENPOINTS
+ GAP
&& lineList.get(k)
.getStartPoint().y < pointList.get(i)).y
* GAPBETWEENPOINTS
+ GAP
&& pointList.get(k).y
* GAPBETWEENPOINTS
+ GAP < lineList
.get(k).getEndPoint().y) {
crossinglines = true;
}
}
if (crossingLines == false) {
lineList.add(b);
}
}
}
validate();
repaint();
}
}
}
}
}
}
und hier verursacht die Ausnahme:
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java
heap space
at java.util.Arrays.copyOf(Arrays.java:2245)
at java.util.Arrays.copyOf(Arrays.java:2219)
at java.util.ArrayList.grow(ArrayList.java:242)
at java.util.ArrayList.ensureExplicitCapacity(ArrayList.java:216)
at java.util.ArrayList.ensureCapacityInternal(ArrayList.java:208)
at java.util.ArrayList.add(ArrayList.java:440)
at GUIs.GameField.mouseClicked(GameField.java:326)
at java.awt.Component.processMouseEvent(Component.java:6519)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6281)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4872)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4698)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4501)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4698)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:747)
at java.awt.EventQueue.access$300(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:706)
at java.awt.EventQueue$3.run(EventQueue.java:704)
at java.security.AccessController.doPrivileged(Native Method)
at
java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.
java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.
java:87)
at java.awt.EventQueue$4.run(EventQueue.java:720)
at java.awt.EventQueue$4.run(EventQueue.java:718)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.
java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:717)
Können Sie uns Code zeigen, der den Fehler verursacht? Z.B. Was passiert in 'GUIs.GameField.mouseClicked()' –
Könnte viele Gründe haben. Vielleicht haben Sie einen logischen Fehler und versuchen, eine große "ArrayList" zu erstellen, die Sie nicht erstellen möchten. Vielleicht hast du gerade ineffizienten Code geschrieben. Wir brauchen wirklich etwas von deinem Code, der mit der Ausnahme zusammenhängt. – Zabuza
'My newbie style coding' - ohne dies zu sehen, ist es schwer zu helfen. –