📄 clientint.java
字号:
/**
*
*/
package chat;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import java.io.*;
import java.net.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.Timer;
/**
* @author jason
*
*/
public class ClientInt extends JFrame implements ActionListener {
/* (non-Javadoc)
* @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
*/
Timer t = new Timer(5000,new TimerAction());
String usr_name;
public String remUser;
class TimerAction implements ActionListener
{
Socket toServer;
ObjectInputStream streamFromServer;
PrintStream streamToServer;
public void actionPerformed(ActionEvent e)
{
try{
toServer = new Socket("localhost",1001);
streamFromServer = new ObjectInputStream(toServer.getInputStream());
streamToServer = new PrintStream(toServer.getOutputStream());
message = txtMsg.getText();
//send a message to Server
streamToServer.println("来自定时器");
//get the Vectors from Server
Vector vector = (Vector)streamFromServer.readObject();
//txtMessages.setText((String)streamFromServer.readObject());
Vector vector1 = (Vector)streamFromServer.readObject();
//list on-line users
txtListUsers.setText("");
for(int j=1;j<vector1.capacity();j++)
{
txtListUsers.append((String)vector1.elementAt(j));
txtListUsers.append("\n");
}
//list messages
int i = messageCount;
for(;i<vector.capacity();i++)
{
txtMessages.append((String)vector.elementAt(i));
txtMessages.append("\n");
}
messageCount =i;
}//end of try
catch(Exception ex)
{
System.out.println("异常"+ex);
}
}//end of the function actionPerformed
}//end of the class TimerAction
int messageCount = 0;
String name;
PrintStream streamToServer;
ObjectInputStream streamFromServer;
Socket toServer;
JTextArea txtMessages;
JTextArea txtListUsers;
JTextField txtMsg;
JButton msgSendBtn;
JButton userLoginBtn;
JButton userRegisterBtn;
JButton userLogoutBtn;
JLabel lblChatRoom;
JLabel lblUserList;
JScrollPane jspSendMsgPane;
JScrollPane jspTxtMsgPane;
JScrollPane jspUserListPane;
JTextField textWriteMsg;
String message;
int nSend;
public ClientInt(String nm)
{
remUser = nm;
usr_name = nm;
this.setTitle("FunChat:"+usr_name);
JPanel panel = new JPanel();
panel.setLayout(new GridBagLayout());
GridBagConstraints gbCons = new GridBagConstraints();
gbCons.gridx = 0;
gbCons.gridy = 0;
lblChatRoom = new JLabel("聊天室",SwingConstants.LEFT);
panel.add(lblChatRoom,gbCons);
gbCons.gridx = 1;
gbCons.gridy = 0;
lblUserList = new JLabel("在线用户",SwingConstants.LEFT);
panel.add(lblUserList,gbCons);
gbCons.gridx = 0;
gbCons.gridy = 1;
gbCons.gridwidth = 1;
gbCons.gridheight = 1;
gbCons.weightx = 1.0;
gbCons.weighty = 1.0;
txtMessages = new JTextArea(25,35);
txtMessages.setEditable(false);
jspTxtMsgPane = new JScrollPane(txtMessages,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
panel.add(jspTxtMsgPane,gbCons);
gbCons.gridx = 1;
gbCons.gridy = 1;
gbCons.gridwidth=1;
gbCons.gridheight=1;
gbCons.weightx = 1.0;
gbCons.weighty = 1.0;
txtListUsers = new JTextArea(25,10);
txtListUsers.setEditable(false);
jspUserListPane = new JScrollPane(txtListUsers,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
panel.add(jspUserListPane,gbCons);
gbCons.gridx = 0;
gbCons.gridy = 2;
gbCons.gridwidth=1;
gbCons.gridheight=1;
gbCons.weightx = 1.0;
gbCons.weighty = 1.0;
txtMsg = new JTextField(35);
jspSendMsgPane = new JScrollPane(txtMsg,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
panel.add(jspSendMsgPane,gbCons);
gbCons.gridx = 1;
gbCons.gridy = 2;
gbCons.gridwidth=1;
gbCons.gridheight=1;
gbCons.weightx = 1.0;
gbCons.weighty = 1.0;
gbCons.anchor = GridBagConstraints.WEST;
msgSendBtn = new JButton("发送");
panel.add(msgSendBtn,gbCons);
msgSendBtn.addActionListener(this);
JPanel btnPanel = new JPanel();
userLogoutBtn = new JButton("退出");
userLogoutBtn.addActionListener(this);
this.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e1)
{
try{
Socket toServer;
ObjectInputStream streamFromServer;
PrintStream streamToServer;
toServer = new Socket("localhost",1001);
streamToServer = new PrintStream(toServer.getOutputStream());
streamToServer.println("用户退出");
streamToServer.println(remUser);
}catch(Exception e2)
{
System.out.println("发生异常:"+e2);
}
}
});
btnPanel.add(userLogoutBtn);
gbCons.gridx = 0;
gbCons.gridy = 3;
gbCons.gridwidth = 1;
gbCons.gridheight = 1;
gbCons.weightx = 1.0;
gbCons.weighty = 1.0;
gbCons.anchor = GridBagConstraints.EAST;
gbCons.fill = GridBagConstraints.HORIZONTAL;
panel.add(btnPanel,gbCons);
getContentPane().add(panel);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(546,576);
setVisible(true);
t.start();
}
public void actionPerformed(ActionEvent e1) {
// TODO Auto-generated method stub
JButton button = (JButton)e1.getSource();
if(button.equals(userLogoutBtn))
{
try{
toServer = new Socket("localhost",1001);
streamToServer = new PrintStream(toServer.getOutputStream());
//send the exit message to Server when exit
streamToServer.println("用户退出");
streamToServer.println(remUser);
}catch(Exception e)
{
System.out.println("发生异常:"+e);
}
this.dispose();
}
else
{
int num1 = 0, num2 = 0, res =0;
String name = "";
try{
toServer = new Socket("localhost",1001);
streamFromServer = new ObjectInputStream(toServer.getInputStream());
streamToServer = new PrintStream(toServer.getOutputStream());
message = txtMsg.getText();
String msg = message;
//send user name and message
streamToServer.println(usr_name+":"+msg);
txtMsg.setText("");
//read response from Server
Vector vector = (Vector)streamFromServer.readObject();
int i = messageCount;
for(;i<vector.capacity();i++)
{
txtMessages.append((String)vector.elementAt(i));
}
messageCount = 1;
}
catch(Exception e)
{
System.out.println("发生异常"+e);
}
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String nm = new String();
ClientInt ci = new ClientInt(nm);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -