Java 如何重新定位在面板内绘制的正方形

Java 如何重新定位在面板内绘制的正方形,java,swing,graphics,Java,Swing,Graphics,如图所示,我正在尝试链接这些圆,并在每个链接的中点处绘制一个正方形。但问题是一些正方形重叠 是否有任何方法,我可以检测这些重叠,并重新定位或移动这些方块,使它们保持在各自的链接上,而不重叠 这是密码 int x1 = 100, x2 = 500, aIncr = 50, bIncr = 50; int y1, y2; y1 = y2 = 100; g.setColor(Color.GRAY); for (int i = 0; i < column

如图所示,我正在尝试链接这些圆,并在每个链接的中点处绘制一个正方形。但问题是一些正方形重叠

是否有任何方法,我可以检测这些重叠,并重新定位或移动这些方块,使它们保持在各自的链接上,而不重叠

这是密码

    int x1 = 100, x2 = 500, aIncr = 50, bIncr = 50;
    int y1, y2;
    y1 = y2 = 100;

    g.setColor(Color.GRAY);

    for (int i = 0; i < column1.length; i++) {
        g.fillOval(x1, y1, column1[i], column1[i]);
        y1 += aIncr;

    }

    for (int i = 0; i < column2.length; i++) {
        g.fillOval(x2, y2, column2[i], column2[i]);
        y2 += bIncr;
    }

    y1 = y2 = 100;
    int squareWidth = 20;

    int x, y;
    for (int i = 0; i < column1.length; i++) {
        y2 = 100;
        for (int j = 0; j < column2.length; j++) {
            g.drawLine(x1 + column1[i] / 2, y1 + column1[i] / 2, x2 + column2[j] / 2, y2 + column2[j] / 2);

            x = ((x1 + column1[i] / 2) + (x2 + column2[j] / 2)) / 2 - squareWidth / 2;
            y = ((y1 + column1[i] / 2) + (y2 + column2[j] / 2)) / 2 - squareWidth / 2;

            g.fillRect(x, y, squareWidth, squareWidth);
            y2 += bIncr;
        }
        y1 += aIncr;
    }
intx1=100,x2=500,aIncr=50,bIncr=50;
int y1,y2;
y1=y2=100;
g、 setColor(颜色为灰色);
for(int i=0;i
更好的解决方案是利用形状的API(特别是椭圆和矩形),这些API有助于检测交点(和其他东西)1)查看。它使用Java2D
Area
对象来测试交叉点。2) 为了更快地获得更好的帮助,请发布一个(最简单的完整且可验证的示例)。