Java 如果箱子碰到另一个箱子,请停止箱子移动

Java 如果箱子碰到另一个箱子,请停止箱子移动,java,user-interface,Java,User Interface,我试图编写一个GUI,允许用户移动一个框。屏幕上还有一个称为“块”的框,不允许该框相交。我有一个移动良好的盒子,但我不知道如何阻止两个相交,并保持在屏幕上的盒子绘图。现在,当盒子碰到块时就消失了(我知道它为什么这样做,我只是不知道如何修复它) X和Y是鼠标左键和右键检测到的移动 box = new Rectangle2D.Double(0 + X, 0 + Y, 200, 50); block = new Rectangle2D.Double(300, 300, 50, 50); if (bo

我试图编写一个GUI,允许用户移动一个框。屏幕上还有一个称为“块”的框,不允许该框相交。我有一个移动良好的盒子,但我不知道如何阻止两个相交,并保持在屏幕上的盒子绘图。现在,当盒子碰到块时就消失了(我知道它为什么这样做,我只是不知道如何修复它)

X和Y是鼠标左键和右键检测到的移动

box = new Rectangle2D.Double(0 + X, 0 + Y, 200, 50);
block = new Rectangle2D.Double(300, 300, 50, 50);

if (box.intersects(block)) {
        hit = true;

    } else {
        hit = false;
    }    

Graphics2D g2 = (Graphics2D) g;
    g2.setPaint(Color.red);
    g2.draw(block);
    if (model.hit()) {
        g2.setPaint(Color.black);
        g2.drawString("WHOA THERE", 20, 50);
    } else {
    g2.setPaint(Color.blue);
    g2.fill(box);

我不太清楚你在问什么。如果你问如何在方块碰到方块时画方块,问题是你的If/else语句。在if情况下,它跳过图形块。移除else以绘制长方体,即使它击中


如果你问如何防止两个盒子相交,那很简单。如果检测到它们相交,请移动移动的长方体,使其刚好位于块外。因此,如果块位于x=10,则将移动框(
model
?)设置为x=11。HTH

你能提供更多关于盒子如何移动的信息吗?您应该做的是在尝试更新长方体位置时检测交点,而不是在绘制长方体时检测交点。我的问题是,它打印警告消息“WHOA THERE”,然后继续让长方体通过块。当您获得更新的长方体位置时,查找与块的交点。如果它相交,请设置框的位置,使其不与块相交。如果不清楚,请发布您的KeyListener,我可以向您显示实际代码。