2

質問にあるように、マウスリスナーを my に設定して、ユーザーがマウスをノードの上にJTree置いたときにカーソルをに変更できるようにしたいと思います。HAND_CURSOR

クリック イベントを処理するために JTreeに既に登録されていますが、やろうとしていることを操作するためにor /MouseAdapterを取得できないようです。MouseMovedMouseEnteredMouseExited

助言がありますか?

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 に答える