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 8 新特性:扩展注解(类型注解和重复注解)

一.注解(JDK1.5) 二.注解更新(JDK1.8) 类型注解和重复注解…………

坦克大战net版,java实现

  • 2017年12月15日 17:50
  • 428KB
  • 下载

Java并发编程的艺术 PDF + mobi

  • 2017年12月15日 18:12
  • 18.82MB
  • 下载

Java虚拟机(四):类文件结构

Class类文件的结构、字节码指令简介、公有设计和私有现实

java华为面试题

  • 2017年12月15日 14:59
  • 58KB
  • 下载

java后端调用大华视频的demo

  • 2017年12月15日 14:57
  • 3.78MB
  • 下载

java中获取控制台输入的两种方式

第一种方式:比较传统的方式,得到字符串后要另行判断、转换 import java.io.BufferedReader; import java.io.IOException; import ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:InputNameTextField.java
举报原因:
原因补充:

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