質問にあるように、マウスリスナーを my に設定して、ユーザーがマウスをノードの上にJTree
置いたときにカーソルをに変更できるようにしたいと思います。HAND_CURSOR
クリック イベントを処理するために JTreeに既に登録されていますが、やろうとしていることを操作するためにor /MouseAdapter
を取得できないようです。MouseMoved
MouseEntered
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 に追加して、マウス カーソルを切り替えることができます。
ツリーに MouseMotionListener を追加すると、マウスがラベル上にあるときではなく、Tree コンポーネント上にあるときにマウスのレンダリングが単に切り替えられることに注意してください。