怎样获得jtree中treenode的坐标

时间:2022-02-11 12:35:50
我想在右键单击treenode时,弹出popupmenu,但是现在是可以弹出,但我不能将popupmenu定位在treenode处,要得到treenode的坐标,然后才能定位弹出菜单,但现在treenode的坐标我不知道怎么得到。
我现在倒可以得到treenode的y坐标,x坐标我通过treenode.getPath().length*30得到,很明显这样得到x坐标不太好,因此请教x坐标怎么得到。谢谢!

5 个解决方案

#1


我不清楚你是怎么处理弹出菜单的,我一般是把弹出事件写在mouseReleased( MouseEvent e )里面,用的mouse的位置定位菜单,比方说

public void mouseReleased( MouseEvent e ) {
    if ( e.isPopupTrigger()) {
        popupMenu.show((JComponent)e.getSource(), 
                   e.getX(), e.getY() );
    }
}

#2


是啊,但是这样弹出菜单的位置就以鼠标位置确定,我是想让弹出菜单在treenode附近弹出,这样就需要知道treenode的坐标

#3


那就先判断一下是不是在树节点上:

if (tree.getRowForLocation(e.getX(), e.getY()) > -1)

#4


我现在就是这样做的,但是这样弹出菜单的位置就是变动的

#5


我知道怎么办了!
jTree1.getPathBounds(treepath)可以得到treenode的位置

#1


我不清楚你是怎么处理弹出菜单的,我一般是把弹出事件写在mouseReleased( MouseEvent e )里面,用的mouse的位置定位菜单,比方说

public void mouseReleased( MouseEvent e ) {
    if ( e.isPopupTrigger()) {
        popupMenu.show((JComponent)e.getSource(), 
                   e.getX(), e.getY() );
    }
}

#2


是啊,但是这样弹出菜单的位置就以鼠标位置确定,我是想让弹出菜单在treenode附近弹出,这样就需要知道treenode的坐标

#3


那就先判断一下是不是在树节点上:

if (tree.getRowForLocation(e.getX(), e.getY()) > -1)

#4


我现在就是这样做的,但是这样弹出菜单的位置就是变动的

#5


我知道怎么办了!
jTree1.getPathBounds(treepath)可以得到treenode的位置