当 MouseEnter 事件触发时显示弹出窗口

Posted

技术标签:

【中文标题】当 MouseEnter 事件触发时显示弹出窗口【英文标题】:Show popup when MouseEnter event fires 【发布时间】:2013-07-13 17:28:33 【问题描述】:

我认为一切都搞砸了。我尝试在MouseEntered 事件触发时创建弹出窗口。我该如何解决这个问题?

Popup p=factory.getPopup(c,null,x,y);  

我不确定参数

此代码的其余部分:

 public class pop extends JFrame

  class mypopUpShow  implements ActionListener
    JComponent c;
  //  final Random random;
 public mypopUpShow(JComponent c)
    this.c=c;
  
    @Override
    public void actionPerformed(ActionEvent ae) 
        Random random=new Random();
       int x = random.nextInt(200);
       int y = random.nextInt(200);
      PopupFactory factory=PopupFactory.getSharedInstance();
      Popup p=factory.getPopup(c,null,x,y);
      p.show();
    
   
   public pop() 
    JPanel Panel=new JPanel();

  final Timer   t=new Timer(100, new mypopUpShow(Panel));
    MouseListener listener=new MouseAdapter() 

        @Override
        public void mouseEntered(MouseEvent me)
        t.start();
         
 ;
   setSize(300,300);
   Panel.addMouseListener(listener);

   add(Panel);
   
   public static void main(String...arg)
   new pop().setVisible(true);
         
   

【问题讨论】:

什么不起作用?请描述您所看到的以及您期望看到的。 1) 对代码块使用一致且符合逻辑的缩进。代码的缩进是为了帮助人们理解程序流程。 2) 为了尽快获得更好的帮助,请发布SSCCE。 3) 不要扩展框架或其他***容器。而是创建并使用一个实例。 4) 源代码中的一个空白行总是就足够了。 5) 始终复制/粘贴错误和异常输出。 嗨,吉姆,正如我所说,我曾尝试在 mouseEntered 事件有效时创建弹出窗口。但我在线程“AWT-EventQueue-0”java.lang.IllegalArgumentException: Popup.getPopup must be传递非空内容 【参考方案1】:

问题是您正在为 getPopup(Component owner, 组件内容,int x,int y) 为 null。这就是您收到 IllegalArgumentException 的原因。尝试将 null 更改为“new JButton("TEST")”之类的东西,您会看到大量按钮弹出。内容是您要弹出的内容(小部件、面板、窗口等)。

【讨论】:

谢谢你,戴夫你太棒了

以上是关于当 MouseEnter 事件触发时显示弹出窗口的主要内容,如果未能解决你的问题,请参考以下文章

仅在单击某个按钮时显示弹出窗口

如何在应用程序每 3 次启动时显示弹出窗口?

如何在 Kendo Multiselect 中悬停时显示弹出窗口

如何在选择图像时显示弹出框

在后台运行时显示弹出窗口的权限

在图像单击时显示弹出窗口