使用 JMapViewer,识别出组件的奇怪行为。我正在使用 DefaultMapController 来获取地图位置(纬度、经度)。
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
import org.openstreetmap.gui.jmapviewer.DefaultMapController;
import org.openstreetmap.gui.jmapviewer.JMapViewer;
public class Test extends JMapViewer{
public Test()
{
addMouseListener(new DefaultMapController(this) {
public void mouseClicked(MouseEvent e){
Point start = e.getPoint();
System.out.println(e.getPoint());
}
});
}
protected void paintComponent(Graphics g){super.paintComponent(g);}
public static void main (String [] args){
JFrame jf = new JFrame();
jf.setSize(800, 600);
Test t= new Test();
jf.add(t);
jf.setVisible(true);
}
}
运行代码,在按下鼠标左键后,方法 mouseClicked() 被多次调用(2x)。更换后
addMouseListener(new DefaultMapController(this) {
和
addMouseListener(new MouseAdapter() {
代码正常工作,该方法仅被调用 1x。问题出在哪里?是库中的错误还是语法错误或不安全?如何避免这个问题?谢谢你的帮助。