InputNameTextField.java

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值