Paint组件不会根据预期的坐标打印多边形

时间:2009-10-14 07:30:17

标签: java linked-list java-2d

我在根据存储在链表中的坐标绘制三角形多边形时遇到问题。当我使用System.out.println方法

中的paint component检查链接列表元素时
Public void paintComponent (Graphics g)  {
...
   for (Polygon p : triangles) {
      g2.drawPolygon(triangle); 
      ... // print the elements of triangles
      System.out.println(p.xpoints[0]);
      System.out.println(p.xpoints[1]);
      System.out.println(p.xpoints[2]);
   }
}

中读取的链接列表元素不相似
public void getTriangles (){
   .....
   while (overlap) 
   {
    ...
   }

   for (Polygon p: triangles){
      ... //print the elements of triangles
      System.out.println(p.xpoints[0]);
      System.out.println(p.xpoints[1]);
      System.out.println(p.xpoints[2]);
   } 
}

我想知道为什么会这样。例如在public getTriangles方法中读取的链表三角形中的x点是 x [0] = 379,x [0] = 429,x [2] = 404 ,并且在{{1}中} x [0] = 249,x [0] = 299,x [2] = 274

paintComponent(Graphics g)

2 个答案:

答案 0 :(得分:0)

这可能是一个线程问题。确保所有具有此三角形变量的活动都是同步的。

更好的是,使用三角形变量将所有活动(设置和获取和绘制)限制到事件派发线程,如下所示:

SwingUtilities.invokeLater(new Runnable() {
    public void run() {
        patternGenerator.setTriangles(...);
   }
}

答案 1 :(得分:0)

最后,我通过将LIST声明为:

解决了这个问题
public static List<Polygon> triangles = new LinkedList<Polygon>();