【发布时间】:2011-12-31 10:16:08
【问题描述】:
我想自动隐藏JToolBar,它仅在鼠标靠近/越过JToolBar 时才会出现。我在JPanel 中添加了JToolBar。 JToolBar 中没有鼠标悬停监听器。如何做到这一点?
【问题讨论】:
-
能否请您发布SSCCE,也许不需要申请
MouseWhatever
我想自动隐藏JToolBar,它仅在鼠标靠近/越过JToolBar 时才会出现。我在JPanel 中添加了JToolBar。 JToolBar 中没有鼠标悬停监听器。如何做到这一点?
【问题讨论】:
MouseWhatever
将MouseMotionListener 添加到您的JFrame 或JDialog。
addMouseMotionListener(new MouseAdapter() {
public void mouseMoved(MouseEvent e) {
toolbar.setVisible(e.getY() < 10);
}
});
这样,工具栏只有在鼠标位于窗口的前 10 个垂直像素时才会显示。
【讨论】:
JToolBar 中没有鼠标悬停监听器
您将使用MouseListener 来处理mouseEntered 和mouseExited 事件。
但是你会遇到一个问题,因为鼠标事件只会被传递给一个可见的组件。所以一旦隐藏工具栏是不会收到 mouseEntered 事件的。
所以我不明白你的设计。您是否打算让其他组件向上移动以填充工具栏的空间?或者你会把空间留空?在后一种情况下,您需要将 MouseMotionListener 添加到面板并处理 mouseMoved 事件以查看鼠标位于工具栏应位于的位置。
【讨论】:
because the mouse events will only be passed to a visible component,