右键单击JTree节点摆动显示弹出框

use*_*790 3 java swing jtree jpopupmenu

我想在JTree节点右键单击时显示弹出框,而不是整个JTree组件.当用户右键单击JTree节点时,弹出框出现.如果他右键单击一个空格,JTree那么它就不会出现.那么为什么我只能为JTree节点检测鼠标事件.我已多次搜索网络,但找不到解决方案,所以请帮助我.

谢谢.

Mik*_*rin 13

这是一个简单的方法:

public static void main ( String[] args )
{
    JFrame frame = new JFrame ();

    final JTree tree = new JTree ();
    tree.addMouseListener ( new MouseAdapter ()
    {
        public void mousePressed ( MouseEvent e )
        {
            if ( SwingUtilities.isRightMouseButton ( e ) )
            {
                TreePath path = tree.getPathForLocation ( e.getX (), e.getY () );
                Rectangle pathBounds = tree.getUI ().getPathBounds ( tree, path );
                if ( pathBounds != null && pathBounds.contains ( e.getX (), e.getY () ) )
                {
                    JPopupMenu menu = new JPopupMenu ();
                    menu.add ( new JMenuItem ( "Test" ) );
                    menu.show ( tree, pathBounds.x, pathBounds.y + pathBounds.height );
                }
            }
        }
    } );
    frame.add ( tree );


    frame.pack ();
    frame.setLocationRelativeTo ( null );
    frame.setVisible ( true );
}
Run Code Online (Sandbox Code Playgroud)