コンポーネントJTree
全体ではなく、ノードのみを右クリックしてポップアップボックスを表示したい。JTree
ユーザーが JTree ノードを右クリックすると、ポップアップ ボックスが表示されます。彼が空白スペースを右クリックしてもJTree
、それは表示されません。JTree
そのために、ノードのみのマウスイベントを検出するにはどうすればよいですか。ネットで何度も検索しましたが、解決策が見つからなかったので、助けてください。
ありがとう。
コンポーネントJTree
全体ではなく、ノードのみを右クリックしてポップアップボックスを表示したい。JTree
ユーザーが JTree ノードを右クリックすると、ポップアップ ボックスが表示されます。彼が空白スペースを右クリックしてもJTree
、それは表示されません。JTree
そのために、ノードのみのマウスイベントを検出するにはどうすればよいですか。ネットで何度も検索しましたが、解決策が見つからなかったので、助けてください。
ありがとう。
簡単な方法は次のとおりです。
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 );
}