我用applet画公交车的线路与站点,如何使鼠标移到线路和站点上的时候,显示出线路和站点的名称啊。
请问这是用鼠标的什么事件实现的,具体如何实现的,给个例子参考更好。
非常感谢大家!!!

解决方案 »

  1.   

    答:
    方法之一::定义一个站点类,从JPanel继承。每一个站点是一个该类的对象。内部储有:站点的各个显示的信息。
    该对象实现:MouseListener接口。在void mouseEntered(MouseEvent e)中填写mouse一进入该站点即显示的信息。在void mouseExited(MouseEvent e)中填写mouse离开该站点时信息消失。或者干脆省事些,使用站点对象的ToolTip来做。缺点是:可能要有许多个小对象。
    方法之二:每一个站点就是图上一个小点(或小区域),在实现MouseMotionListener
    的void mouseMoved(MouseEvent e)代码中,根据mouse位置落在哪一个小区域,查表,显示该区域对应的站点信息。缺点是:站点表不能太大,否则查表时响应时间长。当然可以用HashMap来大大缩短查表时间。以上仅供你参考
      

  2.   

    在想中........
    谢谢上面的"jiangnaisong"。
      

  3.   

    这个不是鼠标事件这么简单的.如果线路与站点你是画在如JPanel上的, 那么, 对于每个站点, 可以用一个如矩形, 圆, 或者椭圆等来表示, 他们都是一个Java中的图形对象, 如Rectangle2D; 线路则可以用图形对象Path, 或者简单点直接用直线来表示, 每一段线路都是这些图形的一个对象.所有上面的这些圆形都是以对象的形式来存储的, 然后当你移动鼠标时, 取得鼠标的坐标(使用addMouseListener, 看相关的鼠标事件处理即可) 就检查一遍鼠标是否与这些图形中的哪一个相交了(简单的图形与点相交算法, 而且用Java的图形类, 如Rectangle2D, Path等, 他们自带了一个方法, contains, 这个可以帮你直接判断图形是否与鼠标相交, 不需要自己去写算法处理), 如果相交, 则显示出相交的信息, 也是画上去的.这些图形对象, 另一个好处是可以把他们保存到文件中, 可以从文件中把他们读入, 重现保存前的公交站点图.