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)
归档时间: |
|
查看次数: |
9237 次 |
最近记录: |