我在根据存储在链表中的坐标绘制三角形多边形时遇到问题。当我使用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)
答案 0 :(得分:0)
这可能是一个线程问题。确保所有具有此三角形变量的活动都是同步的。
更好的是,使用三角形变量将所有活动(设置和获取和绘制)限制到事件派发线程,如下所示:
SwingUtilities.invokeLater(new Runnable() {
public void run() {
patternGenerator.setTriangles(...);
}
}
答案 1 :(得分:0)
最后,我通过将LIST声明为:
解决了这个问题public static List<Polygon> triangles = new LinkedList<Polygon>();