java jSplitPane鼠标悬停时显示和隐藏左窗格
我正在开发一个可以显示和隐藏拆分平面的应用程序。 我读过一些关于如何获得这个的文章,但这不是我想要的
以下是我写的代码:
我目前正在使用netbeans
private void jSplitPane1MouseEntered(java.awt.event.MouseEvent evt) {
if(MouseInfo.getPointerInfo().getLocation() == jSplitPane1.getLeftComponent().getLocation()){
jSplitPane1.setDividerLocation(100);
System.out.println("Mouse Entered");
}else{
jSplitPane1.setDividerLocation(20);
System.out.println("Mouse Exited");
}
}
我提到了这些帖子:
How to make JSplitPane auto expand on mouse hover?
我想做的是,当我将鼠标移到jSplitPane的左侧时,我会按照我的第一个if
语句将分隔符扩展到100,当它存在于左侧时,它会收缩回分隔符位置20
# 1 楼答案
这真的很棘手
您可以在“left”组件上使用
MouseListener
,并监视mouseEntered
和mouseExited
事件,但是当您移入和移出一个子组件时,这些事件也会被触发,该子组件本身有一个MouseListener
(如JButton
)好的,您可以在
JSplitPane
上使用MouseMotionListener
并监视mouseMoved
事件并检查鼠标光标的位置,但当组件(左/右)获得它们自己的MouseListener
时,这就糟了,因为MouseEvent
不再被传递到JSplitPane
所以,最后一个选项是将一个全局
AWTListener
附加到事件队列,并监视JSplitPane
本身发生的事件,例如