我有一个绘制到JPanel上的SwingObjects的ArrayList。我试图比较哪些对象彼此最接近,我真的不知道如何处理这个问题。我做了一个辅助方法,将当前的SwingObject与另一个SwingObject进行比较。
public double distance(SwingObject obj2)
{
int x1 = this.getX();
int y1 = this.getY();
int x2 = obj2.getX();
int y2 = obj2.getY();
double distance = Math.sqrt(((x2-x1)*(x2-x1)) + ((y2-y1)*(y2-y1)));
return distance;
}
我有一个比较器方法,可以将当前的SwingObject与其余的进行比较。
public void closest(SwingObject c, ArrayList<SwingObject> swingList)
{
}
有没有办法比较数组列表中的所有内容并确定相对于当前SwingObject c的短路?
答案 0 :(得分:0)
最近,循环遍历swingList中的所有SwingObjects,并在新List中存储从c到swingList元素的距离。之后,对本地List进行排序,并从最接近的列表返回。
您的距离功能也可能存在问题。 Swing组件的X和Y位置相对于其父容器。因此,您希望所有X和Y彼此相对,因此请使用SwingUtilities.convertPoint。