JTree隐藏了根节点后整棵树都没有了

JTree隐藏根节点的方法是setRootVisible(false),但是写这个功能的时候发现设置完之后整课树都被隐藏了,这是因为这个方法是确定 TreeModel 的根节点是否可见,所以创建TreeModel的位置至关重要,应该放在树创建完之后。用一个创建树的代码说明如下:

/**
	 * 生成好友列表
	 * 
	 * @param map
	 * @return 好友列表树
	 */
	public JTree createTree(HashMap<String, ArrayList<User>> map) {
		// 创建好友列表树
		JTree userTree = new JTree();
		// 创建树模型(不能放在这里,因为此时树还没有设置完毕)
//		TreeModel treeModel = new DefaultTreeModel(root);
//		userTree.setModel(treeModel);
		Set<String> key = map.keySet();
		// 根节点
		DefaultMutableTreeNode root = new DefaultMutableTreeNode("root");
		// 设置树的属性
		userTree.setToggleClickCount(1);
		userTree.putClientProperty("JTree.lineStyle", "None");
		for (Iterator<String> i = key.iterator(); i.hasNext();) {
			// 拿出一个分组
			String kind = (String) i.next();
			// 创建分组
			DefaultMutableTreeNode node = new DefaultMutableTreeNode(kind);
			// 将分组添加到根节点中
			root.add(node);
			ArrayList<User> l = map.get(kind);
			for (int j = 0; j < l.size(); j++) {
				// 取出分组中的好友
				User user = (User) l.get(j);
				DefaultMutableTreeNode friend = new DefaultMutableTreeNode(user);
				// 将好友添加到分组中
				node.add(friend);
			}
		}
		// 创建树模型(放在节点生成完之后)
		TreeModel treeModel = new DefaultTreeModel(root);
		userTree.setModel(treeModel);
		userTree.setRootVisible(false);
		return userTree;
	}



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值