wjoin

MapXTreme

 

mapxtreme 使用右键菜单

在mapxtreme 中visualMapJ1MouseClicked 事件只能便用左键,如果想要右键弹出信息的话,非常的不方便,下面是一个临时的解决办法:

 private void visualMapJ1MouseClicked(java.awt.event.MouseEvent evt) {                                        
// TODO 将在此处添加您的处理代码:
        if(evt.getButton() == MouseEvent.BUTTON1){
            JPopupMenu pop =new JPopupMenu();   //右键菜单
            if(!infoToolListener.getInfo().equals("")){       //取回的地理信息不为空
                pop.add(infoToolListener.getInfo());          //把信息加到菜单上
                pop.show(evt.getComponent(),evt.getX(),evt.getY());   //在鼠标的地方弹出
                infoToolListener.clearInfo();                       //清除上次信息
            }
        } else if (evt.getButton() == MouseEvent.BUTTON3){  //如果点的是鼠标右键,把它模拟成左键

            
            try {
                Robot robot = new Robot();  // 建个机器人
                robot.mousePress(InputEvent.BUTTON1_MASK); //模拟左键按下  
                robot.mouseRelease(InputEvent.BUTTON1_MASK); //左键弹起
            } catch (AWTException ex) {
                ex.printStackTrace();
            }
        }
    }           

我尝试了很多办法,因为mapxtreme 中有很多类都是受保护的,在自己的程序中没法使用,而且,它耦合度非常的高,我曾经想把其中几个类反编译过来使用,结果发现,需要反编译的类越来越多,以至于最后可能要把整个mapxtreme都反编译过来,所以我放弃了这种想法,只好用模拟实现,另外,MapMouseEvent 继承了 MouseEvent 但是没有提供BUTTON 参数,使得左键和中键可以读取到,而右键却不行,所以只好用如此古怪的方法。

posted on 2008-12-29 10:35 wjoin 阅读(367) 评论(0)  编辑  收藏 所属分类: MapXTreme Java Edition


只有注册用户登录后才能发表评论。


网站导航:
 

导航

统计

常用链接

留言簿(2)

随笔分类

随笔档案

文章分类

相册

收藏夹

友情链接

搜索

最新评论

阅读排行榜

评论排行榜