正如问题所述,我想设置一个鼠标监听器JTree
,以便当用户将鼠标放在节点上时,我可以将光标更改为HAND_CURSOR
。
我已经在我的JTree上注册了MouseAdapter
来处理点击事件,但我似乎无法使用MouseMoved
或MouseEntered
/ MouseExited
来处理我正在努力做什么。
有什么建议吗?
答案 0 :(得分: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));
}
}
});
答案 1 :(得分:1)
在JTree中,每个树节点都由与此树关联的TreeCellRenderer
生成的标签显示。通常使用的类是DefaultTreeCellRenderer
,它会渲染(DefaultTreeCellRenderer
)。因此,您可以尝试添加此DefaultTreeCellRenderer
MouseMotionListener来切换鼠标光标。
注意将鼠标添加到树中只会在树组件上切换鼠标渲染,而不是在鼠标位于标签上时。