java - 确定与 Line2D 重叠的组件

标签 java swing line overlap jcomponent

没有。 Line2D 周围和上的组件。我只想找到重叠的组件。我尝试了 line.getbounds().intersects(component) 但它给出了我不需要的矩形区域组件。另外,距离有时给了我一个组件距离 Line 很近,但不在线。有什么解决办法吗?

最佳答案

简短回答:检查这两个条件是否至少有一个为真

  • 线的任何端点都在组件内部,使用 contains 方法
  • 直线与组件边界的任意一侧相交,请使用 intersect 方法。

详细说明: 这些是可能的情况:

  • 线的一个端点位于组件内部(这包括线完全位于组件内部的情况);
  • 线穿过组件,但线的所有端点都在对象之外;在这种情况下,它将与两侧相交,但一条足以验证。
  • 在所有其他情况下,线条和组件不会相互重叠,我们不在乎。

只有中间的项目符号有点棘手,但是由于您只测试 jcomponent,所以生活很简单,因为它们是与轴对齐的矩形。您可以轻松计算组件边界边的端点。边界由点 (x,y) 给出,宽度为 w,高度为 h。这给你四个边:

  • (x,y) - (x+w,y)
  • (x,y) - (x,y+h)
  • (x,y+h) - (x,y+h)
  • (x+w,y) - (x+w,y+h)

关于java - 确定与 Line2D 重叠的组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34723304/

相关文章:

java - 使用mockito进行不需要的模拟

java - 通过jetty.xml进行Swagger UI配置

java - keyPressed 和 keyReleased 不起作用

java - 添加按下按钮时的声音效果

java - 无法显示 JOptionPane - Java Swing

python - 如何在Python程序中使用两个!=中断?

java - 是否可以将 AspectJ 与 MBean 一起使用?

java - 数组赋值会产生 NullPointerException

java - TextView 中的文本数量有限

android - 如何在 Android 中找到每行的字符数或字符串元素数