void mouseReleased(MouseEvent e)
{
if(e.isPopupTrigger())
  show you popup
}好像就直接可以鼠标在这个Popup之外别的什么地方点击一下,这个Popup就消失。

解决方案 »

  1.   

    楼上的姐姐,你的代码是显示一个环境菜单时用的,而我的东西不是JPopupMenu,而是一个Popup,JPopupMenu实现了我所需要的功能,但是我看了JPopupMenu的源代码,也没有看到我想要的东西。
      

  2.   

    你应该看看JPopupMenu的父类
    JPopupMenu可以实现你要的功能!
    而且不要另外来处理她的隐藏!
      

  3.   

    JPopupMenu的父类是JComponent,JComponent并不处理我想要的东西,JPopupMenu是把自己放在一个Popup中从而实现显示与隐藏。可以肯定的是某个地方对鼠标操作进行了处理,如果鼠标没有点在JPopupMenu上,就调用JPopupMenu的setVisible(false)方法,因为setVisible(false)调用了Popup.hide()方法,所以JPopupMenu就消失不见了。现在我就是想找到这个“某个地方”到底是什么地方?!
      

  4.   

    你应该看看JPopupMenu的父类
      

  5.   

    问题解决了。不过并不是按照我原来的想法进行实现的。我原来的想法是自己实现对Popup的控制,结果发现有些问题并不是想象中那么轻松,比如说让这个Popup在适当的时候消失。于是我直接采用JPopupMenu,我把自己的控件加在JPopupMenu上,然后调用JPopupMenu的show()方法,让JPopupMenu帮我处理一切。
    如果哪位大虾清楚JPopupMenu是采用什么机制从而让它自己在合适的时候消失,请继续跟贴。
    谢谢各位!