ClinentChat.java

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

package chatroom;
import java.applet.*;
import java.io.*;
import java.net.*;
import java.awt.*;
import java.util.Hashtable;
//实现runnable接口,实现多继承。要实现Runnable的run方法,不能直接创建runnable类来运行,必须借助thread类
public class ClinentChat extends Applet implements Runnable {
 //变量申明
 Socket socket=null;
 DataInputStream in=null;
 DataOutputStream out=null;
 InputNameTextField submit=null;
 ChatArea chatSpace=null;
 Hashtable listTable;
 Label  tishi=null;
 Panel north,center;
 Thread thread;//用来运行runnable对象
 //初始化工作
 public void init(){
  setSize(800,400);
  int width=getSize().width;
  int height=getSize().height;
  listTable =new Hashtable();
  setLayout(new BorderLayout());
  submit =new InputNameTextField(listTable);
  int h=submit.getSize().height;
  chatSpace=new ChatArea("",listTable,width,height-(h+5));
  chatSpace.setVisible(false);
  tishi=new Label("正在连接到服务器,请稍等...",Label.CENTER);
  tishi.setForeground(Color.red);
  north=new Panel(new FlowLayout(FlowLayout.LEFT));
  center=new Panel();
  north.add(submit);
  north.add(tishi);
  center.add(chatSpace);
  add(north,BorderLayout.NORTH);
  add(center,BorderLayout.CENTER);
  validate();//??
 }
 //
 public void start(){
  //清除以前的套接字连接
  if(socket!=null&&in!=null&&out!=null){
   try{
    socket.close();
   }catch(Exception e){
   }
  }
  //与服务器套接字建立连接
  try{
   socket =new Socket(this.getCodeBase().getHost(),6666);//??
   in=new DataInputStream(socket.getInputStream());
   out=new DataOutputStream(socket.getOutputStream());
   }catch(IOException e){
    tishi.setText("连接失败");
   }
  //如果套接字连接成功,提示用户登录
  if(socket!=null){
   InetAddress address=socket.getInetAddress();
   tishi.setText("连接"+address+"成功");
   submit.setSocketConnection(socket,in,out);
   north.validate();
  }
  //为该用户启动一个新线程
  if(thread==null){
   thread=new Thread(this);
   thread.start();
  } 
 }
 //
 public void stop(){
  try{
   socket.close();
   thread=null;
  }catch(IOException e){
   this.showStatus(e.toString());
   
  }
 }
    //
 public void run(){
  while(thread!=null){
   if(submit.getCanChat()==true){
    chatSpace.setVisible(true);
    chatSpace.setName(submit.getName());
    chatSpace.setSocketConnection(socket,in,out);
    tishi.setText("祝聊天愉快!");
    center.validate();
    break;
   }
   try{
    Thread.sleep(100);
   }catch(Exception e){}
  }
 }
}
 
 
 
 

 

java实验之swing图形用户界面程序设计及总结

8.1组件和容器 顶层容器有小应用程序(Applet和JApplet)、对话框(Dialog和JDialog)、框架(Frame和JFrame)。这些容器都存在于java.swing*;中. ...

Java经典问题算法大全

  • 2017年12月11日 16:31
  • 2.06MB
  • 下载

java各种job

  • 2017年12月11日 12:16
  • 12.33MB
  • 下载

【转】关于Java生成背景透明的png图片

http://www.cnblogs.com/dotjava/archive/2008/09/04/1283963.html 关于Java生成背景透明的png图片 最近用到...

java基础自学课程,day02

  • 2017年12月11日 12:32
  • 669KB
  • 下载

[JAVA] 文本分段处理,中文

上一篇发布了一个小说,原文是PDF。 为了
  • gopain
  • gopain
  • 2014年11月06日 21:01
  • 1386

java9 cookbook

  • 2017年12月10日 20:38
  • 7.82MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ClinentChat.java
举报原因:
原因补充:

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