您的
Testextensions
JMapViewer,
MouseListener在实例初始化程序块中添加了一个。作为一个结果,“默认构造函数会调用父类的无参数的构造。”
超类
JMapController会 第二 次添加您(
MouseListener您猜对了)。 __
public JMapController(JMapViewer map) { this.map = map; if (this instanceof MouseListener) map.addMouseListener((MouseListener) this); …}相反,创建一个新的
JMapController或
DefaultMapController,如图所示这里,并用它来构建你的
JMapViewer。
import java.awt.EventQueue;import java.awt.event.MouseEvent;import javax.swing.Jframe;import org.openstreetmap.gui.jmapviewer.DefaultMapController;import org.openstreetmap.gui.jmapviewer.JMapViewer;public class TestMapController { private void display() { Jframe f = new Jframe("TestMapController"); f.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE); JMapViewer map = new JMapViewer(); new DefaultMapController(map) { @Override public void mouseClicked(MouseEvent e) { System.out.println(e.getPoint()); } }; f.add(map); f.pack(); f.setLocationRelativeTo(null); f.setVisible(true); } public static void main(String[] args) { EventQueue.invokeLater(new TestMapController()::display); }}


