📄 inputnametextfield.java
字号:
/*
* Title: 网络应用
* Description: b/s模式网络聊天室
* Copyright: Copyright (c) 2004 飞鱼工作室
* Company: HOHAI
* @author: lishaofeng,yuanfeng
* @version: 1.0
*/
import java.awt.*;
import java.net.*;
import javax.swing.*;
import java.awt.event.*;
import java.io.*;
import java.util.Hashtable;
/////////////////////////////////////
public class InputNameTextField extends Panel implements ActionListener,Runnable
{
ClientChat client;
TextField nameFile=null; //用来输入用户昵称的文本条.
String name=null;
Checkbox male=null,female=null; //选择性别的单选框.
CheckboxGroup group=null;
Button InChat=null,OutChat=null;
Socket socket=null; //和服务器login的套接字.
DataInputStream in=null; //读取服务器发来的消息.
DataOutputStream out=null; //向服务器发送消息.
Thread thread=null; //负责读取服务器发来的消息的线程.
boolean CanChat=false;
Hashtable listTable; //存放在线聊天者昵称的散列表.
///////////////////////////////////////////////////
public InputNameTextField(Hashtable listTable,ClientChat client)
{
this.listTable=listTable;
nameFile=new TextField(10);
group=new CheckboxGroup();
this.client=client;
male=new Checkbox("男",true,group);
female=new Checkbox("女",false,group);
InChat=new Button("进入");
OutChat=new Button("退出");
InChat.addActionListener(this);
OutChat.addActionListener(this);
thread=new Thread(this);
add(new Label("昵称:"));
add(nameFile);
add(male);
add(female);
add(InChat);
add(OutChat);
OutChat.setEnabled(false);
}
public void setCanChat(boolean b)
{
CanChat=b;
}
public boolean getCanChat()
{
return CanChat;
}
public String getName()
{
return name;
}
public void setName(String s)
{
name=s;
// System.out.println(name);
}
public void setSocketConnection(Socket socket,DataInputStream in,DataOutputStream out)
{
this.socket=socket;
this.in=in;
this.out=out;
try
{
thread.start();
}
catch(Exception e)
{
nameFile.setText(""+1);
}
if(this.socket!=null)
{
InChat.setEnabled(true);
}
}
public Socket getSocket()
{
return socket;
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==InChat)
{ //CanChat==true;
OutChat.setEnabled(true);
client.name=nameFile.getText();
// System.out.println("我的 名字"+client.name);
if(CanChat==true)
{
nameFile.setText("您正在聊天:"+name);//////////
// UserChat..setText("欢迎"+UserHdChat.name+"进入飞鱼聊天室");
}
else
{
this.setName(nameFile.getText());
String sex=group.getSelectedCheckbox().getLabel();
if(socket!=null&&name!=null)
{ //将用户信息发送给服务器端.
try
{
out.writeUTF("姓名:"+name+"性别:"+sex);
}
catch(IOException ee)
{
nameFile.setText("没有连通服务器"+ee);
}
}
}
}
if(e.getSource()==OutChat)
{ //通知服务器用户已离开.
try
{
out.writeUTF("用户离开:");
}
catch(IOException ee)
{
}
}
}
public void run()
{
String message=null;
while(true)
{ //接收服务器发来的消息,并进行分析处理.
if(message.startsWith("可以聊天:"))
{
CanChat=true;
}
else if(message.startsWith("聊天者:"))
{
String people=message.substring(message.indexOf(":")+1);
listTable.put(people,people); //将目前在线的聊天者昵称添加到散列表中.
}
else if(message.startsWith("不可以聊天:"))
{
CanChat=false;
nameFile.setText("该昵称已被占用");
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -