Java 如何确定顶部的矩形?

Java 如何确定顶部的矩形?,java,swing,overlap,rectangles,Java,Swing,Overlap,Rectangles,我现在有一个画重叠矩形的程序,我想知道是否有一个简单的方法来确定哪个形状在顶部(最明显)。这让我很困惑,因为在处理3D时,没有z轴可以像中一样使用 我尝试过在矩形中循环并使用.contains方法,但它返回特定点下的所有矩形,而不是最高级别的矩形 我也四处搜索过,但可能我使用了错误的关键字?通常,当人们绘制代码时,他们会执行以下操作: 列表矩形= for (int i = 0; i < rectangles.size(); i++) //paint the rectangle

我现在有一个画重叠矩形的程序,我想知道是否有一个简单的方法来确定哪个形状在顶部(最明显)。这让我很困惑,因为在处理3D时,没有z轴可以像中一样使用

我尝试过在矩形中循环并使用.contains方法,但它返回特定点下的所有矩形,而不是最高级别的矩形


我也四处搜索过,但可能我使用了错误的关键字?

通常,当人们绘制代码时,他们会执行以下操作:

列表矩形=

for (int i = 0; i < rectangles.size(); i++)
    //paint the rectangle

从末尾开始,将给出绘制的最后一个矩形,这意味着它位于所有其他矩形的顶部。

通常,当人们绘制代码时,他们会执行以下操作:

列表矩形=

for (int i = 0; i < rectangles.size(); i++)
    //paint the rectangle


从末尾开始,将给出最后一个绘制的矩形,这意味着它位于所有其他矩形的顶部。

您能否澄清“最可见”的含义?你是说与其他矩形重叠的面积最小的矩形?可能是最后一个你渲染的矩形。在这种情况下,石灰绿在“顶部”。没有被另一个正方形重叠?我很确定石灰绿在“底部”。半熟的柠檬黄在顶部。是的,我刚刚意识到iv使用了糟糕的颜色,对不起,你能澄清一下“最明显”是什么意思吗?你是说与其他矩形重叠的面积最小的矩形?可能是最后一个你渲染的矩形。在这种情况下,石灰绿在“顶部”。没有被另一个正方形重叠?我很确定石灰绿在“底部”。半熟的柠檬黄在顶部。是的,我刚刚意识到iv使用了糟糕的颜色,对不起,也许这能更好地解释我想要实现的目标?我让鼠标侦听器按预期工作,并记录用户在屏幕上按x和y的位置。从这些单词中,我如何判断顶部是什么?我给了你答案,只要确保点是你画矩形的面板的坐标。好的,我会试试的,谢谢。很抱歉,如果这个问题被认为是愚蠢的,但现在是凌晨4点:D这个问题并不愚蠢,我只是不知道你为什么不尝试这个建议。你已经有了循环代码,我只是建议你把循环改成相反的顺序。你应该能在一分钟左右完成的一行更改。然后它要么起作用(在这种情况下你可以上床睡觉),要么不起作用(在这种情况下你可以要求澄清)。当你问问题时,不要害怕尝试。有时候这个建议会管用,有时候你通过尝试学到的东西都不会管用。我对2D图形和swing不太感兴趣,解决方案这么简单让我有点吃惊。我已经实现了你的答案,而且它工作得完美无缺。它还无意中解决了另一个问题,当时我正试图清除屏幕上的矩形。看到这个解决方案,我意识到我可以清除矩形的arraylist,因为paintComponent方法只是浏览列表并打印包含的任何矩形。再次感谢!也许这能更好地解释我想要实现的目标?我让鼠标侦听器按预期工作,并记录用户在屏幕上按x和y的位置。从这些单词中,我如何判断顶部是什么?我给了你答案,只要确保点是你画矩形的面板的坐标。好的,我会试试的,谢谢。很抱歉,如果这个问题被认为是愚蠢的,但现在是凌晨4点:D这个问题并不愚蠢,我只是不知道你为什么不尝试这个建议。你已经有了循环代码,我只是建议你把循环改成相反的顺序。你应该能在一分钟左右完成的一行更改。然后它要么起作用(在这种情况下你可以上床睡觉),要么不起作用(在这种情况下你可以要求澄清)。当你问问题时,不要害怕尝试。有时候这个建议会管用,有时候你通过尝试学到的东西都不会管用。我对2D图形和swing不太感兴趣,解决方案这么简单让我有点吃惊。我已经实现了你的答案,而且它工作得完美无缺。它还无意中解决了另一个问题,当时我正试图清除屏幕上的矩形。看到这个解决方案,我意识到我可以清除矩形的arraylist,因为paintComponent方法只是浏览列表并打印包含的任何矩形。再次感谢!