gpt4 book ai didi

java - 将鼠标事件添加到 JMapViewer mapMarker

转载 作者:行者123 更新时间:2023-12-01 11:13:58 24 4
gpt4 key购买 nike

如何将 mouseListener 添加到 MapMarker(MepMarkerDot 或 MapMarkerCircle),使其像按钮一样?我试过this解决方案,但它使整个 map 可点击(鼠标事件适用于所有 map )。

最佳答案

您走在正确的道路上,从 TrashGod's MouseListener solution 开始,但是您需要添加更多代码,关键部分是,您需要获取用户按下位置的 Point 位置,MouseEvent#getPoint() 方法会告诉您,并且然后根据该信息以及组件“Activity ”区域的边界决定是否响应。像这样的东西:

@Override
public void mousePressed(MouseEvent e) {
Point p = e.getPoint(); // this is where the user pressed
if (isPointValid(p)) {
// do something
}
System.out.println(map.getPosition(e.getPoint()));
}

private boolean isPointValid(Point p) {
// here you have code to decide if the point was pressed in the area of interest.
}

请注意,如果您的代码使用 Shape 派生对象,例如 Ellipse2D 或 Rectangle2D,您可以使用它们的 contains(Point p) 方法轻松告诉您点按是否在 Shape 内。或者,如果您想要检查多个位置,您可能有一个 Shapes 集合,在 mousePressed 或(如果有的话)isPointValid 方法中迭代它们,并在 for 循环中检查包含情况。

关于java - 将鼠标事件添加到 JMapViewer mapMarker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32053700/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com