我在Java中创建了以下用户界面。
当用户将鼠标悬停在屏幕上的特定区域上时,会出现一个包含一堆按钮和控件的弹出窗口。
PopupFactory factory = PopupFactory.getSharedInstance();
_hoverPanel = factory.getPopup( parent, panel, x, y );
_hoverPanel.show();
当用户与面板的组件交互时,我希望此面板在屏幕上保持可见,但是一旦用户鼠标存在,弹出边界我希望弹出窗口隐藏。
我尝试在弹出窗口内的面板中添加一个mouselistener,但是我注意到当我进入面板时,mouseEntered只会触发(而不是当我输入面板中找到的组件时),而当我退出面板时,mouseExited仅触发。
这里的问题是我可以弹出窗口,但是只要我将鼠标移动到面板内,然后在面板内的组件顶部,mouseExited就会触发面板,弹出窗口会隐藏:(
我也可以将鼠标快速移动到面板上方的组件顶部,并且mouseEntered永远不会为面板触发:(
如何检测鼠标何时进入弹出式面板内外?
答案 0 :(得分:0)
我遇到了类似的问题(当鼠标悬停在我的对话框上时捕获所有鼠标事件)我通过将对话框的根窗格包装在JLayer(javax.swing.JLayer)中来解决它,如{{3}所示}