InputNameTextField.java

原创 2007年10月05日 22:47:00

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

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

java反编译软件

mysql-connector-java-5.1.29

java 设计模式 其一 单例模式

单例模式转载出处(侵删) http://www.blogjava.net/kenzhh/archive/2013/03/15/357824.html 有的时候,我们在全局中,为了不制造多个实例,避...

java图片水印代码

java入门常识——第一天

此笔记是本人在0基础学习过程中整理的笔记,这是第一天

eclipse-java-google-style

java线程池简介

Java通过Executors提供四种线程池,分别为: newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。 new...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)