⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rightpane.java

📁 聊天工具
💻 JAVA
字号:
package client.chat.chatpane;

import java.awt.BorderLayout;
import java.awt.Color;

import javax.swing.BorderFactory;
import javax.swing.DefaultListModel;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTabbedPane;
import javax.swing.JTextArea;
import javax.swing.JTree;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreeSelectionModel;

import utils.StaticUtils;
import client.chat.node.DpmNode;
import client.chat.node.RootNode;
import client.chat.node.UserNode;

/**
 * 聊天窗口界面的右边面板,用于创建公告面板和用户列表
 * @author 洪景泉
 *
 */
public class RightPane extends JPanel{
	private static final long serialVersionUID = 8443223185851413266L;
	private JSplitPane sppnTotle = null;
	private ChatFrame chatFrame=null;
	//公告面板部分
	private JTabbedPane tablePane=null;
	private JTextArea textArea=null;
	private JScrollPane scrollPane=null;
	
	//	用户列表部分
	private JPanel userPane=null;
	private JScrollPane userJSP=null;
	private DefaultListModel dlm = new DefaultListModel();
	private JTree userTree = null;
	/**
	 * 构造函数
	 * @param chatFrame 主窗体对象
	 */	
	public RightPane(ChatFrame chatFrame) {
		this.chatFrame=chatFrame;
		//公告面板
		tablePane=new JTabbedPane();
		textArea=new JTextArea();
		textArea.setEditable(true);
		textArea.setLineWrap(true);
		
		scrollPane=new JScrollPane(textArea);
		scrollPane.setBorder(BorderFactory.createLineBorder(new Color(144, 185, 229)));
		tablePane.add("系统公告", scrollPane);
		
		
		
		//用户列表部分
		userTree = new JTree();
		userTree.getSelectionModel().setSelectionMode(TreeSelectionModel.DISCONTIGUOUS_TREE_SELECTION );
		userJSP=new JScrollPane(userTree);
		userPane=new JPanel();
		userPane.setLayout(new BorderLayout());
		userPane.add(new JLabel("用户列表"),BorderLayout.NORTH);
		userPane.add(userJSP,BorderLayout.CENTER);
		
		MyRenderer myRenderer = new MyRenderer();
		//  设置用于表示扩展的非叶节点的图标
		myRenderer.setOpenIcon(new ImageIcon("./image/total/expaned.gif"));
		myRenderer.setClosedIcon(new ImageIcon("./image/total/collapsed.gif"));
		//设置用于表示叶节点的图标。
		myRenderer.setLeafIcon(new ImageIcon("./image/total/collapsed.gif"));
		//  设置将用于绘制每个单元格的 TreeCellRenderer
		userTree.setCellRenderer(myRenderer);
		userTree.putClientProperty("JTree.lineStyle", "None");
		userTree.getSelectionModel().addTreeSelectionListener(new TrSelectionListener());
		
		sppnTotle = new JSplitPane(JSplitPane.VERTICAL_SPLIT,tablePane,userPane);
		sppnTotle.setDividerLocation(170);
		sppnTotle.setOneTouchExpandable(true);
		this.setLayout(new BorderLayout());
		this.add(sppnTotle,BorderLayout.CENTER);
		
	}


	/**
	 * 	用户列表监听事件
	 * @author 洪景泉
	 *
	 */
	class TrSelectionListener implements TreeSelectionListener {

		/**
		 *根据用户的选择记录to的值,然后把to保存到 currentUser中
		 */
		
		public void valueChanged(TreeSelectionEvent e) {
			DefaultMutableTreeNode dmtn = (DefaultMutableTreeNode) userTree
					.getLastSelectedPathComponent();
			if (dmtn != null) {
				String to = "";

				Object object = dmtn.getUserObject();
				if (object instanceof RootNode) {
					RootNode rootData = (RootNode) object;
					chatFrame.getLPane().getIconLabel().setIcon(new ImageIcon("./image/newface/compicon.gif"));
					chatFrame.getLPane().getNameLabel().setText(rootData.getSname()+" 聊天中");
					to = "1:全公司";
				} else if (object instanceof DpmNode) {
					DpmNode dpmData = (DpmNode) object;
					chatFrame.getLPane().getIconLabel().setIcon(new ImageIcon("./image/newface/dpmicon.gif"));
					chatFrame.getLPane().getNameLabel().setText(dpmData.getDpmName()+"  聊天中");
			        to = "2:"+dpmData.getDpmName();
				} else if (object instanceof UserNode) {
					UserNode userData = (UserNode) object;
					
					String sid = userData.getUserID();
					String sonline = userData.getUserOnline();
					
					if (sid.equals((String) StaticUtils.currentUser.get("userID"))) {
						JOptionPane.showMessageDialog(chatFrame,"不能对自己发消息");
						return;
					} else if (sonline.equals("0")) {
						JOptionPane.showMessageDialog(chatFrame,"对方不在线");
						return;
					}
									
					chatFrame.getLPane().getIconLabel().setIcon(new ImageIcon("./image/newface/" + userData.getUserIcon()
									+ "_m.gif"));
					chatFrame.getLPane().getNameLabel().setText(userData.getUserName());
					to = "3:"+userData.getUserID();
				}
			StaticUtils.currentUser.put("to", to);
			}
		}

	}
	
	public DefaultListModel getDlm() {
	
		return dlm;
	}
	public JTree getUserTree() {
		return userTree;
	}
	public void setUserTree(JTree userTree) {
		this.userTree = userTree;
	}
	public JTextArea getTextArea() {
		return textArea;
	}
	
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -