`
Etwo
  • 浏览: 104504 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

java中利用JTree模仿QQ做好友列表的例子

阅读更多

这是一个关于java中JTree中双击树中的节点的例子。。。希望多学习学习。。。

package net.etwo.jtree.example;

import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.IOException;
import java.net.Socket;
import java.util.Vector;

import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;

public class TestJTreeCount {

	private JFrame jframeFriendList;
	private JPanel jpanelFrendList;

	private JButton jbtnOnlineFriendList, jbtnMyGroupChat;

	private JList jlistOnlineFriendList;

	private DefaultListModel defaultListModel;

	private JScrollPane jscrollPaneOnlineFriendList;
	private JScrollPane jscrollPaneOnlineFriendListJTree;

	// 设置树
	private JTree jtree;
	// 设置节点(此节点为跟节点)
	private DefaultMutableTreeNode dmtnRoot = new DefaultMutableTreeNode();

	private DefaultMutableTreeNode dmtnOnlineUsersRoot = new DefaultMutableTreeNode(
			"我的好友");

	private DefaultMutableTreeNode dmtnMyGroup = new DefaultMutableTreeNode(
			"我的群");

	private DefaultMutableTreeNode dmtnUnknownUsers = new DefaultMutableTreeNode(
			"陌生人");

	private DefaultMutableTreeNode dmtnBlackName = new DefaultMutableTreeNode(
			"黑名单");

	// 设置节点(此节点为好友列表节点)
	private DefaultMutableTreeNode dmtnLeaf;

	private DefaultMutableTreeNode dmtnGroup = new DefaultMutableTreeNode("群聊");

	public TestJTreeCount() {
		// TODO Auto-generated constructor stub
		initView();
		acctionListener();
		setOnlineList();
	}
	
	public static void main(String[] args) {
		new TestJTreeCount();
	}

	// 视图
	public void initView() {
		jframeFriendList = new JFrame();
		jpanelFrendList = new JPanel();
		defaultListModel = new DefaultListModel();
		// jlistOnlineFriendList = new JList(defaultListModel);
		jlistOnlineFriendList = new JList();

		jbtnOnlineFriendList = new JButton("在线用户");
		jbtnOnlineFriendList.setEnabled(false);
		jbtnMyGroupChat = new JButton("模拟QQ设计");
		jbtnMyGroupChat.setEnabled(false);
		jpanelFrendList.setLayout(null);
		// 列表显示
		// dmtnRoot.add(dmtnLeaf);
		jtree = new JTree(dmtnRoot);
		// 设置根节点是否显示
		jtree.setRootVisible(false);
		jtree.putClientProperty("JTree.lineStyle", "None");// 清除线
		jtree.setShowsRootHandles(true);// 设置图标
		dmtnRoot.add(dmtnOnlineUsersRoot);
		dmtnRoot.add(dmtnMyGroup);
		dmtnRoot.add(dmtnUnknownUsers);
		dmtnRoot.add(dmtnBlackName);
		dmtnMyGroup.add(dmtnGroup);

		jscrollPaneOnlineFriendListJTree = new JScrollPane(jtree);
		jscrollPaneOnlineFriendList = new JScrollPane(jlistOnlineFriendList);
		// jscrollPaneOnlineFriendList.getViewport()
		// .setView(jlistOnlineFriendList);
		jbtnOnlineFriendList.setBounds(0, 0, 250, 30);
		jscrollPaneOnlineFriendList.setBounds(0, 30, 250, 570);
		jscrollPaneOnlineFriendListJTree.setBounds(0, 30, 250, 570);
		jbtnMyGroupChat.setBounds(0, 595, 250, 30);

		jpanelFrendList.add(jbtnOnlineFriendList);

		jpanelFrendList.add(jscrollPaneOnlineFriendListJTree);
		// jpanelFrendList.add(jscrollPaneOnlineFriendList);

		jpanelFrendList.add(jbtnMyGroupChat);
		jframeFriendList.add(jpanelFrendList);

		jframeFriendList.setSize(250, 650);
		jframeFriendList.setResizable(false);
		jframeFriendList.setLocationRelativeTo(null);
		jframeFriendList
				.setDefaultCloseOperation(jframeFriendList.EXIT_ON_CLOSE);
		jframeFriendList.setVisible(true);
	}

	// 触发事件
	public void acctionListener() {
		// 选择好友聊天
		jtree.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e) {
				// TODO Auto-generated method stub
				// super.mouseClicked(e);
				int count = jtree.getRowForLocation(e.getX(), e.getY());
				if (e.getClickCount() == 1)
					System.out.println(count);
				if (count != -1) {
					String strFriendUsername = jtree
							.getLastSelectedPathComponent().toString();
					if (e.getClickCount() == 2 && count != 0
							&& !strFriendUsername.equals("陌生人")
							&& !strFriendUsername.equals("黑名单")
							&& !strFriendUsername.equals("我的群")) {
						if (jtree.isRowSelected(jtree.getRowForLocation(
								e.getX(), e.getY()))) {
							System.out.println("你双击了:" + strFriendUsername);
						}
					}
				}
			}
		});

		// 关闭事件
		jframeFriendList.addWindowListener(new WindowAdapter() {
			@Override
			public void windowClosing(WindowEvent e) {
				// TODO Auto-generated method stub
				// super.windowClosing(e);
				System.exit(0);
			}
		});
	}

	// 设置在线列表
	public void setOnlineList() {
		String onlineUsers = null;
		for (int i = 0; i < 5; i++) {
			onlineUsers += "go";
			dmtnLeaf = new DefaultMutableTreeNode(onlineUsers);
			dmtnOnlineUsersRoot.add(dmtnLeaf);
		}
		jtree.updateUI();
	}
}
 

 

分享到:
评论
1 楼 raohenglena 2014-05-27  
打开之后没有显示列表

相关推荐

    java组件之jtree使用

    `JTree`是Java Swing中的一个重要组件,用于展示层次化的数据结构。它提供了一种直观的方式来表示具有层级关系的数据,例如文件系统的目录结构或者组织架构等。本文将详细介绍如何在Java程序中使用`JTree`,包括其...

    jtree和QQ项目\树实现好友列表,并模拟来信图片变换

    jtree和QQ项目\树实现好友列表,并模拟来信图片变换

    java中Jtree的使用

    Jtree的使用例子 这是类似qq的节点例子 帮助我们是简单地编码

    java swing-jtree的用法

    Java Swing中的JTree组件是用来展示层次结构数据的可视化控件,它通常用于文件系统或组织结构的表示。JTree的核心是TreeNode接口,每个节点都对应一个TreeNode对象。TreeNode定义了一系列方法,如`getChildCount()`...

    java实现的仿QQ好友列表

    很多同志在用java做仿QQ聊天程序或者是做聊天程序时,都不自觉得想到了QQ好友列表,可是java中的JTree没有那个功能,又要显示头像又要显示昵称,这个资源不仅可以实现以上功能,而且可以显示个性签名和空间动态等,...

    jtree和QQ项目\使用jmenu实现QQ的好友界面

    在QQ项目中,`JTree` 可能被用来模拟QQ的好友分组结构,用户可以通过展开和折叠节点来查看不同分组以及其中的好友列表。每个节点可以代表一个分组,子节点则代表该分组下的好友。通过`DefaultTreeModel`和`TreeNode`...

    java使用jtree动态实现二叉树

    在Java编程中,`JTree`是Swing库中的一个组件,用于展示树形数据结构。这个组件在GUI(图形用户界面)应用中非常常见,因为它可以清晰地展示层次关系的数据,比如文件系统目录结构。在Java中动态实现二叉树,即在...

    JAVA JTREE JTABLE实例代码

    在Java Swing库中,JTree和JTable是两个非常重要的组件,它们被广泛用于构建用户界面,特别是处理数据展示和交互。JTree用于显示层次结构的数据,而JTable则适用于二维表格形式的数据展现。 首先,我们来深入了解...

    Java JTree+JTable应用

    在Java Swing库中,`JTree`和`JTable`是两种非常重要的组件,用于创建用户界面。`JTree`通常用于展示层次化的数据结构,而`JTable`则适用于二维表格数据的显示和操作。本项目是关于如何在Java应用程序中结合使用这两...

    java中JTree的简单应用

    Java中的JTree组件是Swing库中的一个关键部分,它用于在用户界面中展示树状数据结构。在Java Swing应用程序中,JTree常用于显示文件系统目录、数据库结构或者自定义对象的层次关系。这个“java中JTree的简单应用”...

    java中JTree高级编程

    Java中的JTree组件是Swing库提供的一种用于展示树形数据结构的图形用户界面(GUI)元素。在Java中,JTree通常用于显示文件系统、应用程序的层次结构或任何具有层级关系的数据。JTree的高级编程涉及到多个方面,包括...

    java代码-使用java解决JTree文件浏览的源代码

    java代码-使用java解决JTree文件浏览的源代码

    JAVA中的Swing的JTree操作的宝典

    在Java的Swing库中,JTree是一个非常重要的组件,用于展示层次结构的数据。它以树状的形式显示信息,使得用户能够浏览和交互这些数据。本篇“JAVA中的Swing的JTree操作的宝典”将深入探讨如何进行树节点的增加、删除...

    jtree带复选框的例子

    总的来说,"jtree带复选框的例子"是一个很好的学习资源,它教你如何在Java Swing应用程序中提供用户友好的多选交互,这对于构建数据管理界面或者配置界面来说是非常有价值的。通过深入研究和实践这个示例,你将能够...

    jtree和QQ项目\带有右键的树(数据库)

    总之,这个"jtree和QQ项目\带有右键的树(数据库)"项目涉及了Java Swing中的`JTree`组件、右键菜单的实现、数据库操作以及JDBC的使用,这些都是Java GUI编程和数据库应用中的核心知识点。通过这个项目,开发者不仅...

    JTree的例子,可以拖动节点

    在`JTree`中实现拖放功能,我们需要利用Java Swing提供的`TransferHandler`类和一些相关的事件监听器。 1. **创建`JTree`实例**: 首先,你需要创建一个`DefaultMutableTreeNode`作为树的数据模型,并将其设置到`...

    java代码-使用java解决JTree访问XML的源代码

    java代码-使用java解决JTree访问XML的源代码 ——学习参考资料:仅用于个人学习使用!

    java Swing JTree的教程实例

    在Java Swing中,JTree是一个非常重要的组件,用于展示层次结构的数据,通常以树状的形式显示。它在各种用户界面中都有广泛的应用,例如文件系统浏览、组织结构展示等。本教程将深入讲解如何使用JTree以及相关的操作...

    jtree和QQ项目\树上实现了弹出聊天窗口

    `jTree`是Java Swing库中用于创建和展示树形数据结构的一个组件,它允许用户以图形化的方式查看和操作层次化的数据。本项目的核心是利用`jTree`实现一个功能,即当用户在树形结构上点击一个节点时,能够弹出一个聊天...

    利用JTree实现了树形菜单

    用JSplitePane将窗口划分为左右两部分。单机左边菜单,在右边串口显示显示相关性息。相关功能可自行添加。

Global site tag (gtag.js) - Google Analytics