java jtree 指定节点的展开和关闭,选择鼠标最近的节点

本文提供了两种方法来操作Java JTree组件,实现指定节点的展开和关闭。这些技巧对于优化JTree的交互体验非常有用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

jtree对于指定节点,怎么开启和关闭呢?下面写两个方法,供大家参考。

package com.sysc.xmleditor.utils;

import java.awt.event.MouseEvent;

import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreePath;
/**
 * jtree帮助类
 * @author Administrator
 *
 */
public class TreeHelp {
	/**
	 * 展开指定节点所有后代节点
	 * @param aTree展开所有节点,后代节点层层展开
	 * @param aNode
	 */
	public static void expandTreeNode(JTree aTree, DefaultMutableTreeNode aNode) {
	    if (aNode.isLeaf()) {
	      return;
	    }
	    aTree.expandPath(new TreePath( ( (DefaultMutableTreeNode) aNode).getPath()));
	    int n = aNode.getChildCount();
	    for (int i = 0; i <n; i++) {
	      expandTreeNode(aTree, (DefaultMutableTreeNode) aNode.getChildAt(i));
	    }
	 }
	
	/**
	 * 关闭指定节点所有后代节点
	 * @param aTree,直接关闭指定节点
	 * @param aNode
	 */
	public static void collapseTreeNode(JTree aTree, DefaultMutableTreeNode aNode) {
	    if (aNode.isLeaf()) {
	      return;
	    }
	    
	    TreePath path=new TreePath(aNode.getPath());
	    aTree.collapsePath(path);
	  }
	
	/**
	 * 通过鼠标的位置找到选择的位置
	 * @param tree
	 * @param e
	 */
	public static void selectTreeElem_Mouse(JTree tree,MouseEvent e) {
        TreePath path = getPathByMouse(tree, e);
        tree.setSelectionPath(path);
    }
	
	/**
	 * 返回鼠标最近的treePath节点
	 * @param tree
	 * @param e
	 * @return
	 */
	public static TreePath getPathByMouse(JTree tree,MouseEvent e){
		TreePath path = tree.getPathForLocation(e.getX(),e.getY());//选择鼠标最近的节点的条目
		return path;
	}
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值