JPopupMenu弹出后不消失了

ctgucool 2013-01-18 10:32:44
代码很简答,为什么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();
...全文
185 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ctgucool 2013-01-28
  • 打赏
  • 举报
回复
不要调用setvisible去显示菜单,要条用show就可以
ceclinux 2013-01-20
  • 打赏
  • 举报
回复
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方法即可,示例如上
maxcai 2013-01-20
  • 打赏
  • 举报
回复
请上传完整的可以运行的类代码,这样有更多的C友可以帮你

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧