📄 clientint.java
字号:
/*
* clientInt.java
*
* Created on 2007年12月2日, 下午10:02
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package appserver;
/**
*
* @author user
*/
import java.io.*;
import java.net.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.util.*;
import javax.swing.Timer;
public class clientInt extends JFrame implements ActionListener {
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 e2)
{
try{
toServer = new Socket("wgqr-7f254dd399", 1001);
streamFromServer = new ObjectInputStream(toServer.getInputStream());
streamToServer = new PrintStream(toServer.getOutputStream());
message = txtMsg.getText();
//向服务器发送一消息
streamToServer.println("Timer");
//从服务器端接收Vector向量
Vector vector = (Vector)streamFromServer.readObject();
Vector vector1 =(Vector)streamFromServer.readObject();
//显示在线用户
txtListUsers.setText("");
for(int j = 1;j<vector1.capacity(); j++)
{
txtListUsers.append ((String)vector1.elementAt(j));
txtListUsers.append("\n");
}
//显示该消息
int i = messageCount;
for(;i<vector.capacity();i++)
{
txtMessages.append((String)vector.elementAt(i));
txtMessages.append("\n");
}
messageCount = i;
}// try块尾
catch(Exception e)
{
System.out.println("异常 "+e);
}
}// actionPerformed函数尾
}// TimerListener类结束
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("wgqr-7f254dd399",1001);
streamToServer = new PrintStream(toServer.getOutputStream());
streamToServer.println("User Logout");
streamToServer.println(remUser);
}// try块尾
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,587);
setVisible(true);
t.start();
}// clientInt()函数结束
public void actionPerformed(ActionEvent e1)
{
JButton button = (JButton)e1.getSource();
//若单击退出按钮,触发此事件
if(button.equals(userLogoutBtn))
{
try
{
toServer = new Socket("wgqr-7f254dd399",1001);
streamToServer = new PrintStream(toServer.getOutputStream());
//退出时,向服务器发送退出消息
streamToServer.println("User Logout");
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("wgqr-7f254dd399", 1001);
streamFromServer = new ObjectInputStream(toServer.getInputStream());
streamToServer = new PrintStream(toServer.getOutputStream());
message = txtMsg.getText();
String msg = message;
//发送用户名和用户输入的聊天信息
streamToServer.println(usr_name+":"+msg);
txtMsg.setText("");
//读取服务器的回应信息
Vector vector =(Vector)streamFromServer.readObject();
int i = messageCount;
for(;i<vector.capacity();i++)
{
txtMessages.append((String)vector.elementAt(i)); //显示消息
txtMessages.append("\n");
}// for块结束
messageCount = i;
}//try结束
catch(Exception e)
{
System.out.println("发生异常: "+e);
}
}//else块尾
}// actionPerformed()方法结束
public static void main(String args[]) {
String nm = new String();
clientInt CI = new clientInt(nm);
}
}//类结束
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -