⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 inputnametextfield.java

📁 java网络聊天CS模式
💻 JAVA
字号:
/*
 * Title:        网络应用
 * Description:  b/s模式网络聊天室
 * Copyright:    Copyright (c) 2004  飞鱼工作室
 * Company:      HOHAI
 * @author: lishaofeng,yuanfeng
 * @version: 1.0
 */
import java.awt.*;
import java.net.*;
import javax.swing.*;
import java.awt.event.*;
import java.io.*;
import java.util.Hashtable;
/////////////////////////////////////
public class InputNameTextField extends Panel implements ActionListener,Runnable
{
    ClientChat client;
  	TextField nameFile=null;        //用来输入用户昵称的文本条.               
  	String name=null;
  	Checkbox male=null,female=null;     //选择性别的单选框.           
  	CheckboxGroup group=null;
  	Button  InChat=null,OutChat=null;
  	Socket socket=null;                //和服务器login的套接字.            
  	DataInputStream in=null;           //读取服务器发来的消息.            
  	DataOutputStream out=null;         //向服务器发送消息.            
  	Thread thread=null;                //负责读取服务器发来的消息的线程.            
  	boolean CanChat=false;
  	Hashtable listTable;               //存放在线聊天者昵称的散列表.
  	///////////////////////////////////////////////////                
  	public InputNameTextField(Hashtable listTable,ClientChat client)
  	{
    	this.listTable=listTable;
    	nameFile=new TextField(10);
    	group=new CheckboxGroup();
        this.client=client;
		male=new Checkbox("男",true,group);
		female=new Checkbox("女",false,group);
    	InChat=new Button("进入");
    	OutChat=new Button("退出");
    	InChat.addActionListener(this);
    	OutChat.addActionListener(this);
    	thread=new Thread(this);
    	add(new Label("昵称:"));
    	add(nameFile); 
    	add(male); 
    	add(female);
    	add(InChat);
    	add(OutChat);
    	OutChat.setEnabled(false);
  	}
 	public void setCanChat(boolean b)
  	{
   		CanChat=b;
  	}
 	public boolean getCanChat()
  	{
    	return CanChat;
  	}
 	public String getName()
  	{
   		return name;
  	}
 	public void setName(String s)
  	{
    	name=s;
//    	System.out.println(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(""+1);
        }
        if(this.socket!=null)
        {
        	InChat.setEnabled(true);
        }
  	}
 	public Socket getSocket()
  	{
    	return socket;
  	} 
 	public void actionPerformed(ActionEvent e)
  	{ 
   		if(e.getSource()==InChat)   
     	{  //CanChat==true;
        	OutChat.setEnabled(true);
        	client.name=nameFile.getText();
//        	System.out.println("我的 名字"+client.name);
        	if(CanChat==true)
         	{
           		nameFile.setText("您正在聊天:"+name);//////////
//				UserChat..setText("欢迎"+UserHdChat.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()==OutChat) 
     	{        //通知服务器用户已离开.
       		try
          	{
             	out.writeUTF("用户离开:");
          	}
       		catch(IOException ee)
          	{
          	}
     	}     
  	}
 	public void run()
  	{
    	String message=null;
     	while(true)
       	{         //接收服务器发来的消息,并进行分析处理.
         	if(message.startsWith("可以聊天:"))
           	{
             	CanChat=true;
           	} 
         	else if(message.startsWith("聊天者:"))
           	{
             	String people=message.substring(message.indexOf(":")+1);
             	listTable.put(people,people);     //将目前在线的聊天者昵称添加到散列表中.           
           	}
         	else if(message.startsWith("不可以聊天:"))
           	{
             	CanChat=false;
             	nameFile.setText("该昵称已被占用");
           	}
       	}
  	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -