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() {
コードは正しく機能し、メソッドは 1 回だけ呼び出されます。問題はどこだ?ライブラリ内のバグですか、それとも構文が間違っているか安全ではありませんか? この問題を回避するには?ご協力いただきありがとうございます。