用JTree开发用户列表界面

 

 

以下,笔者将介绍如果通过对JTree对象的操作实现如下功能:

1.将用户列表信息展示在JTree的结点上

2.双击某个结点获得该结点的信息

3.根据用户名删除结点

4.根据用户名添加结点

 

###预定义用到的属性

private JTree tree;//Tree to show user names
private DefaultTreeModel model;//Tree model
private DefaultMutableTreeNode root;//根结点
private JFrame frame;//加载组件的面板

###将用户列表信息展示在JTree的结点上

private void createTree(String[] userNames){
		DefaultMutableTreeNode root = new DefaultMutableTreeNode("我的好友");
		for(String userName: userNames) {
			DefaultMutableTreeNode newNode = new DefaultMutableTreeNode(userName);
			friendRoot.add(newNode);
		}
		tree = new JTree(root);
}

###取得JTree的模型(DefaultTreeModel),将JTree加载到滚动面板上,并进行相关设置

public void addFriendList(String[] userNames){
		createTree(userNames);
		model = (DefaultTreeModel)tree.getModel();
		tree.setFont(new Font("微软雅黑",Font.PLAIN,16));
		JScrollPane sp = new JScrollPane(tree);
		sp.setBounds(0, 150, 300, 400);
		sp.setBackground(Color.white);
		frame.add(sp);
		javax.swing.SwingUtilities.updateComponentTreeUI(tree);
}

###双击某个结点获得该结点的信息

tree.addMouseListener(new  MouseAdapter{
		public void mouseClicked(MouseEvent e) {
			if(e.getClickCount()==2){
				DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode)tree.getLastSelectedPathComponent();
				String selectedStr = (String)selectedNode.getUserObject();
				if(selectedStr.equals("我的好友"))return;
				else{
					System.out.println("您选择的结点是:"+selectedStr);
					//此处添加对结点进行操作的代码
				}
			}
		}
});

###根据用户名获得JTree对象中对应的结点

private DefaultMutableTreeNode getUserNodeOnTree(String userName){
		//广度优先遍历
		Enumeration<TreeNode> e = (Enumeration<TreeNode>)root.breadthFirstEnumeration();
		DefaultMutableTreeNode node=null;
		while(e.hasMoreElements()) {
			node = (DefaultMutableTreeNode)e.nextElement();
			if(node.getUserObject().toString().equals(userName)) return node;
		}
		return null;
}

###根据用户名添加结点

public void addUser(String userName){
		if(userName==null || userName.trim().length()==0) return ;
		DefaultMutableTreeNode newNode = new DefaultMutableTreeNode(userName);
		model.insertNodeInto(newNode, root, root.getChildCount());//在指定位置插入结点
}

###根据用户名删除结点     

public void removeUser(String userName){
		MutableTreeNode userNode = getUserNodeOnTree(userName);
		if(userNode == null) return;
		model.removeNodeFromParent(userNode);//删除结点
}

下面是笔者根据以上操作编写的一个用户列表界面,供参考:

用户列表界面

由于笔者水平有限,错误疏漏之处在所难免,欢迎读者提出修改完善意见~~

笔者QQ:422104389 ,技术博客:yyzjava.iteye.com(那年此时)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值