package chatroom;
import java.awt.*;
import java.net.*;
import java.awt.event.*;
import java.io.*;
import java.util.Hashtable;
public class InputNameTextField extends Panel implements ActionListener,Runnable{
//
TextField nameFile=null;
String name=null;
Checkbox male=null,female=null;
CheckboxGroup group=null;
Button enter=null,exit=null;
Socket socket=null;
DataInputStream in=null;
DataOutputStream out=null;
Thread thread=null;//监听服务器端来的消息
boolean canChat=false;
Hashtable listTable;
//
public InputNameTextField(Hashtable listTable){
this.listTable=listTable;
nameFile=new TextField(10);
group=new CheckboxGroup();
male=new Checkbox("男",true,group);
female=new Checkbox("女",true,group);
enter=new Button("进入");
exit=new Button("退出");
enter.addActionListener(this);
exit.addActionListener(this);
thread =new Thread(this);
add(new Label("昵称:"));
add(nameFile);
add(male);
add(female);
add(enter);
add(exit);
exit.setEnabled(false);
}
//
public boolean getCanChat() {
return canChat;
}
public void setCanChat(boolean canChat) {
this.canChat = canChat;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = 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(" "+e);
}
}
public Socket getSocket(){
return socket;
}
public void actionPerformed(ActionEvent e){
if(e.getSource()==enter){
exit.setEnabled(true);
if(canChat==true)
nameFile.setText(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()==exit){
try{
out.writeUTF("用户离开:");
}catch(IOException eee){
}
}
}
public void run(){
String message=null;
while(true){
if(in!=null){
try{
message=in.readUTF();
}catch(IOException e){
nameFile.setText("和服务器的连接已断开"+e);
}
}
if(message.startsWith("可以聊天:")){
canChat=true;
break;
}else if(message.startsWith("聊天者:")){
String people=message.substring(message.indexOf(":")+1);
listTable.put(people, people);
}else if(message.startsWith("不可以聊天:")){
canChat=false;
nameFile.setText("该昵称已被占用,请选择其它昵称.");
}
}
}
}