📄 rightpane.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 + -