исключение при рисовании многоугольника с использованием Java Swing - PullRequest
0 голосов
/ 25 октября 2010

эй, я пишу простую программу на Java.но когда я рисую рамку с полигонами, нарисованными из цикла for, возникает исключение.

цикл for:

for (int i=0;i<k;i++)
  { x= 100; y= 100;
  for(int j=0;j<k;j++)
  { if (cell[i][j]==0) break;
   if(i % 2 !=0)
    { p = new Polygon();
     for (int h = 0; h < 6; i++)
            p.addPoint((int) (x + 50 * Math.cos(h * 2 * Math.PI / 6)),(int) (y + 50 * Math.sin(h * 2 * Math.PI / 6)));

         g.drawPolygon(p);
    }    
   x+=75;
  }
  y+=45;
  }

Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
    at java.util.Arrays.copyOf(Arrays.java:2834)
    at java.awt.Polygon.addPoint(Polygon.java:279)
    at freqnew.paintComponent(freqnew.java:44)
    at javax.swing.JComponent.paint(JComponent.java:1027)
    at javax.swing.JComponent.paintChildren(JComponent.java:864)
    at javax.swing.JComponent.paint(JComponent.java:1036)
    at javax.swing.JComponent.paintChildren(JComponent.java:864)
    at javax.swing.JComponent.paint(JComponent.java:1036)
    at javax.swing.JLayeredPane.paint(JLayeredPane.java:564)
    at javax.swing.JComponent.paintChildren(JComponent.java:864)
    at javax.swing.JComponent.paintToOffscreen(JComponent.java:5129)
    at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:277)
    at javax.swing.RepaintManager.paint(RepaintManager.java:1213)
    at javax.swing.JComponent.paint(JComponent.java:1013)
    at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:21)

    at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:60)
    at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:97)
    at java.awt.Container.paint(Container.java:1762)
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:810)

    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:714)

    at javax.swing.RepaintManager.seqPaintDirtyRegions(RepaintManager.java:694)
    at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:128)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)

    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)

    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

пытался увеличить кучу Java, но мой метод из командной строки, кажется,неправильно.попробовал: java -Xms128m -Xmx256m

PLZ, помогите мне как можно скорее.

1 Ответ

1 голос
/ 25 октября 2010

Ваш код неполон и зашифрован. Вы уверены, что у вас нет условия завершения цикла, которое не может произойти? (то есть бесконечный цикл). Сколько полигонов вы рисуете?

Вы можете включить некоторые записи, чтобы убедиться, что код выполняет то, что вы ожидаете.

Вы могли бы сделать раннее завершение цикла и использовать средства ОС, чтобы проверить использование памяти, чтобы увидеть, происходит ли утечка (то есть сбор пакетов).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...