2

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

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

有什么建议么?

4

2 回答 2

7

您需要添加一个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));
        }
    }
});
于 2010-03-17T14:56:19.720 回答
1

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

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

于 2010-03-17T14:58:07.813 回答