关闭

InputNameTextField.java

1031人阅读 评论(0) 收藏 举报

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("该昵称已被占用,请选择其它昵称.");
     }
  }
 }
 
}
 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:173102次
    • 积分:2496
    • 等级:
    • 排名:第14776名
    • 原创:43篇
    • 转载:150篇
    • 译文:0篇
    • 评论:48条
    文章分类
    最新评论