此城以空 2017-02-07 08:50 采纳率: 0%
浏览 1153

关于Java弹出菜单实现的问题

今天看书看到java弹出菜单的设计和实现这个部分.书上有段代码

        // Create the popup menu
        jpu = new JPopupMenu();

        // Create the popup menu items
        JMenuItem jmiCut = new JMenuItem("Cut");
        JMenuItem jmiCopy = new JMenuItem("Copy");
        JMenuItem jmiPaste = new JMenuItem("Paste");

        // Add the menu items to the popup menu
        jpu.add(jmiCut);
        jpu.add(jmiCopy);
        jpu.add(jmiPaste);

        // add a listener for the popup trigger
        jfrm.addMouseListener(new MouseAdapter() {
            @Override
            public void mousePressed(MouseEvent e) {
                if (e.isPopupTrigger())
                    jpu.show(e.getComponent(), e.getX(), e.getY());
            }

            @Override
            public void mouseReleased(MouseEvent e) {
                if (e.isPopupTrigger())
                    jpu.show(e.getComponent(), e.getX(), e.getY());
            }
        });

如上所示,我觉得很神奇,为什么不直接用mouseRealeased和mousePressed这两个中的一个方法定义弹出菜单,而是两个方法定义成一样的.
后来当我把其中的一个方法注释后就弹不出来了.
希望大神能帮我解答一下,谢谢

  • 写回答

4条回答 默认 最新

  • 乔小南丶 2017-02-07 09:02
    关注

    鼠标被按下,一直不松手,不论停留在原处还是移动,此时触发的是 mousePressed 事件
    mouseReleased ,因为它必须发生在 mousePressed 和 mouseDragged 之后:
    假设鼠标在A点被按下,然后一直不松开,然后移动到 B 点, 松开,此时触发的是 mouseReleased 事件,在 mouseReleased 事件之前,一定会有 mousePressed 和mouseDragged 事件

    评论

报告相同问题?

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?