如何检查鼠标是否在Java中的一行上

问题描述 投票:0回答:1

我正在创建一个Java应用程序,并希望创建它,以便用户可以单击一行以使事件发生。该线仅由其2个端点定义,两个端点均具有x和y坐标。

关于如何检查是否可以检查从鼠标按下事件(带有x和y坐标)中收集到的位置是否在此行上的任何想法?

我想这样做,以便使该行的命中检测对用户来说有点宽容,因此只要鼠标按下距该行很近,它就会被接受。

java math geometry line
1个回答
0
投票

一般的想法是,您应该计算点击点和直线之间的距离。如果距离小于2个像素,则认为点击距离足够近。

如果您愿意,可以do the math yourself。在Java标准库中,java.awt.geom.Line2D类具有检查点与线或线段之间的距离的方法。

double distance = Line2D.ptSegDist​(lineStartX, lineStartY, 
                                   lineEndX, lineEndY,
                                   clickX, clickY);

if (distance < 2) {
    // success!
}
© www.soinside.com 2019 - 2024. All rights reserved.