繁体   English   中英

如何将鼠标监听器添加到JTree,以便在将鼠标悬停在节点上时可以更改光标(到手形光标)?

[英]How to add a mouse listener to a JTree so that I can change the cursor (to a hand cursor) when hovering over a node?

正如问题所述,我想为我的JTree设置鼠标监听器,以便当用户将鼠标放在节点上时我可以将光标更改为HAND_CURSOR

我已经在我的JTree上注册了一个MouseAdapter来处理点击事件,但我似乎无法使用MouseMovedMouseEntered / MouseExited来处理我正在尝试的事情。

有什么建议么?

您需要添加MouseMotionListener/Adapter

tree.addMouseMotionListener(new MouseMotionAdapter() {
    @Override
    public void mouseMoved(MouseEvent e) {
        int x = (int) e.getPoint().getX();
        int y = (int) e.getPoint().getY();
        TreePath path = tree.getPathForLocation(x, y);
        if (path == null) {
            tree.setCursor(Cursor.getDefaultCursor());
        } else {
            tree.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
        }
    }
});

在JTree中,每个树节点都由与此树关联的TreeCellRenderer生成的标签显示。 通常使用的类是DefaultTreeCellRenderer ,它会渲染它( DefaultTreeCellRenderer )。 因此,您可以尝试添加此DefaultTreeCellRenderer一个MouseMotionListener来切换鼠标光标。

注意,将鼠标添加到树中只会在树组件上切换鼠标渲染,而不是在鼠标位于标签上时。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM