代码很简答,为什么pMenu弹出后不能消失,除非关闭程序,有什么办法在pMenu以外的任何地方点击鼠标都消失呢
private JPopupMenu pMenu;
private JMenuItem mSelectAll;
private JMenuItem mCopy;
private JMenuItem mCut; private JMenuItem mSelectAll;
private JMenuItem mCopy;
private JMenuItem mCut; mSelectAll.addMouseMotionListener(this);
mCopy.addMouseMotionListener(this);
mCut.addMouseMotionListener(this);

mSelectAll.addActionListener(this);
mCopy.addActionListener(this);
mCut.addActionListener(this); pMenu.add(mSelectAll);
pMenu.add(mCopy);
pMenu.add(mCut);
pMenu.setLocation(p);
pMenu.setVisible(true);
pMenu.requestFocus();弹出菜单 消失java弹出菜单

解决方案 »

  1.   

    import java.awt.BorderLayout;
    import java.awt.TextField;
    import java.awt.event.FocusAdapter;
    import java.awt.event.FocusEvent;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
     
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
    import javax.swing.JTextField;
    /**
     * http://bbs.csdn.net/topics/390340915
    *
     * @author ceclinux
     *
     */
    public class MouseExitExample extends JFrame {
     
        /**
         * @param args
         */
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            new MouseExitExample();
        }
     
        public MouseExitExample() {
            setVisible(true);
            setSize(300,300);
            JButton jb=new JButton("dfsafs");
            jb.setSize(200,200);
            add(jb,BorderLayout.EAST);
            final JTextField tf = new JTextField();
            tf.setSize(200,200);
         
            tf.addMouseListener(new MouseListener() {
                 
                @Override
                public void mouseReleased(MouseEvent e) {
                    // TODO Auto-generated method stub
                     
                }
                 
                @Override
                public void mousePressed(MouseEvent e) {
                    // TODO Auto-generated method stub
                     
                }
                 
                @Override
                public void mouseExited(MouseEvent e) {
                    // TODO Auto-generated method stub
                    System.out.println("a");
                }
                 
                @Override
                public void mouseEntered(MouseEvent e) {
                    // TODO Auto-generated method stub
                     
                }
                 
                @Override
                public void mouseClicked(MouseEvent e) {
                    // TODO Auto-generated method stub
                     
                }
            });
    add(tf);
    }
    }
    如果没理解错的话,重写MouseListener的mouseExit方法即可,示例如上
      

  2.   

    不要调用setvisible去显示菜单,要条用show就可以