if(pointer.next!
=null){
pointer=pointer.next;
}
else{
returnnull;
}
i++;
}
returnpointer;
}
}
packageliaotian;
importjava.awt.*;
importjava.awt.event.*;
importjava.io.*;
import.*;
importjavax.swing.*;
/*
*聊天客户端的主框架类
*/
publicclassChatClientextendsJFrameimplementsActionListener{
/**
*
*/
privatestaticfinallongserialVersionUID=1L;
Stringip="127.0.0.1";//连接到服务端的ip地址
intport=8888;//连接到服务端的端口号
StringuserName="狂狂";//用户名
inttype=0;//0表示未连接,1表示已连接
JComboBoxcombobox;//选择发送消息的接受者
JTextAreamessageShow;//客户端的信息显示
JScrollPanemessageScrollPane;//信息显示的滚动条
JLabelexpress,sendToLabel,messageLabel;
JTextFieldclientMessage;//客户端消息的发送
JCheckBoxcheckbox;//悄悄话
JComboBoxactionlist;//表情选择
JButtonclientMessageButton;//发送消息
JTextFieldshowStatus;//显示用户连接状态
Socketsocket;
ObjectOutputStreamoutput;//网络套接字输出流
ObjectInputStreaminput;//网络套接字输入流
ClientReceiverecvThread;
//建立菜单栏
JMenuBarjMenuBar=newJMenuBar();
//建立菜单组
JMenuoperateMenu=newJMenu("操作(O)");
//建立菜单项
JMenuItemloginItem=newJMenuItem("用户登录(I)",newImageIcon("face/98.gif"));
JMenuItemlogoffItem=newJMenuItem("用户注销(L)",newImageIcon("face/icon.gif"));
JMenuItemexitItem=newJMenuItem("退出(X)",newImageIcon("face/smile.gif"));
JMenuconMenu=newJMenu("设置(C)");
JMenuItemuserItem=newJMenuItem("用户设置(U)",newImageIcon("face/messenger_big.gif"));
JMenuItemconnectItem=newJMenuItem("连接设置(C)",newImageIcon("face/Uabrand.gif"));
JMenuhelpMenu=newJMenu("帮助(H)");
JMenuItemhelpItem=newJMenuItem("帮助(H)",newImageIcon("face/HelpCenter.gif"));
//建立工具栏
JToolBartoolBar=newJToolBar();
//建立工具栏中的按钮组件
JButtonloginButton;//用户登录
JButtonlogoffButton;//用户注销
JButtonuserButton;//用户信息的设置
JButtonconnectButton;//连接设置
JButtonexitButton;//退出按钮
//框架的大小
DimensionfaceSize=newDimension(400,600);
JPaneldownPanel;
GridBagLayoutgirdBag;
GridBagConstraintsgirdBagCon;
publicChatClient(){
init();//初始化程序
//添加框架的关闭事件处理
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.pack();
//设置框架的大小
this.setSize(faceSize);
this.setVisible(true);
setIconImage(getToolkit().getImage("face/love.gif"));
//设置运行时窗口的位置
DimensionscreenSize=Toolkit.getDefaultToolkit().getScreenSize();
this.setLocation((int)(screenSize.width-faceSize.getWidth())/2,
(int)(screenSize.height-faceSize.getHeight())/2);
this.setResizable(false);
this.setTitle("聊天室客户端");//设置标题
//为操作菜单栏设置热键'V'
operateMenu.setMnemonic('O');
//为用户登录设置快捷键为ctrl+i
loginItem.setMnemonic('I');
loginItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_I,InputEvent.CTRL_MASK));
//为用户注销快捷键为ctrl+l
logoffItem.setMnemonic('L');
logoffItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_L,InputEvent.CTRL_MASK));
//为退出快捷键为ctrl+x
exitItem.setMnemonic('X');
exitItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_MASK));
//为设置菜单栏设置热键'C'
conMenu.setMnemonic('C');
//为用户设置设置快捷键为ctrl+u
userItem.setMnemonic('U');
userItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_U,InputEvent.CTRL_MASK));
//为连接设置设置快捷键为ctrl+c
connectItem.setMnemonic('C');
connectItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK));
//为帮助菜单栏设置热键'H'
helpMenu.setMnemonic('H');
//为帮助设置快捷键为ctrl+p
helpItem.setMnemonic('H');
helpItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_H,InputEvent.CTRL_MASK));
}
/**
*程序初始化函数
*/
publicvoidinit(){
ContainercontentPane=getContentPane();
contentPane.setLayout(newBorderLayout());
//添加菜单栏
operateMenu.add(loginItem);
operateMenu.add(logoffItem);
operateMenu.addSeparator();
operateMenu.add(exitItem);
jMenuBar.add(operateMenu);
conMenu.add(userItem);
conMenu.addSeparator();
conMenu.add(connectItem);
jMenuBar.add(conMenu);
helpMenu.add(helpItem);
jMenuBar.add(helpMenu);
setJMenuBar(jMenuBar);
//初始化按钮
loginButton=newJButton("登录");
logoffButton=newJButton("注销");
userButton=newJButton("用户设置");
connectButton=newJButton("连接设置");
exitButton=newJButton("退出");
//当鼠标放上显示信息
loginButton.setToolTipText("连接到指定的服务器");
logoffButton.setToolTipText("与服务器断开连接");
userButton.setToolTipText("设置用户信息");
connectButton.setToolTipText("设置所要连接到的服务器信息");
//将按钮添加到工具栏
toolBar.add(userButton);
toolBar.add(connectButton);
toolBar.addSeparator();//添加分隔栏
toolBar.add(loginButton);
toolBar.add(logoffButton);
toolBar.addSeparator();//添加分隔栏
toolBar.add(exitButton);
contentPane.add(toolBar,BorderLayout.NORTH);
checkbox=newJCheckBox("悄悄话");
checkbox.setSelected(false);
actionlist=newJComboBox();
actionlist.addItem("微笑地");
actionlist.addItem("高兴地");
actionlist.addItem("轻轻地");
actionlist.addItem("生气地");
actionlist.setSelectedIndex(0);
//初始时
loginButton.setEnabled(true);
logoffButton.setEnabled(false);
//为菜单栏添加事件监听
loginItem.addActionListener(this);
logoffItem.addActionListener(