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

📄 chatappletthree.java

📁 用不同方法实现聊天室功能的JAVA代码
💻 JAVA
字号:
/*
 * chatappletthree.java
 *
 * Created on 2007年10月27日, 上午10:52
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package chatroom;
import java.net.*; 
import java.io.*; 
import java.awt.*; 
import java.awt.event.*; 
import java.applet.*;
/**
 *
 * @author 王鹏
 */

 

class Mywindow extends Frame implements ActionListener 
{TextField text1,text2; 
Button button1,button2; 
Mywindow() 
{super("发悄悄话窗口"); 
setLayout(new GridLayout(3,2)); 
text1=new TextField(12); 
text2=new TextField(8); 
button1=new Button("送出悄悄话"); 
button2=new Button("关闭此窗口"); 
add(new Label("送悄悄话到:")); 
add(text1); 
add(new Label("输入你的悄悄话")); 
add(text2); 
add(button2); 
add(button1); 
setSize(400,190); 
text1.setEditable(false); 
setVisible(false); 
button1.addActionListener(this); 
button2.addActionListener(this); 
setBackground(Color.pink); 
} 
public void actionPerformed(ActionEvent e) 
{if(e.getSource()==button1) 
{try{chatappletthree.out.writeUTF("悄悄的对"+text1.getText()+"说:"+text2.getText()+"(我是"+chatappletthree.baocun+")");} 
catch(IOException e1){} 
} 
else if(e.getSource()==button2) 
{this.setVisible(false);} 
} 
} 
class Apanel extends Panel 
{TextField name_txt; Button button1,button2; 
Checkbox box1,box2,box3; 
CheckboxGroup sex; 
Apanel() 
{name_txt=new TextField(10); 
button1=new Button("进入聊天室"); 
button2=new Button("退出聊天室"); 
setLayout(new FlowLayout()); 
sex=new CheckboxGroup(); 
box1=new Checkbox("男M",false,sex); 
box2=new Checkbox("女F",false,sex); 
box3=new Checkbox("毛毛",false,sex); 
add(new Label("输入昵称"));add(name_txt); 
add(box1); 
add(box2); 
add(box3); 
add(button1); 
add(button2); 
add(new Label("制作人:0511班 王鹏 学号:200594061 QQ:383090450")); 

} 
} 
class Bpanel extends Panel 

{TextArea chat_txt; 
B2panel b2; 
Bpanel() 
{chat_txt=new TextArea(20,75); 
b2=new B2panel(); 
chat_txt.setEditable(false); 
setLayout(new FlowLayout()); 
add(chat_txt); 
add(b2); 

} 
} 
class B2panel extends Panel 
{java.awt.List list; 
B2panel() 
{try{ list=new java.awt.List(25,false);} 
catch(NullPointerException e){} 
setLayout(new BorderLayout()); 
add("Center",list); 
add("North",new Label("聊天者列表:")); 
add("East",new Label()); 
add("South",new Label("双击某昵称可悄悄话")); 

} 
} 
class Cpanel extends Panel 
{TextField msg_txt;Button button,button2,button3; 
Cpanel() 
{msg_txt=new TextField(66); 
button=new Button("发送消息"); 
button2=new Button("刷新谈话区"); 
button3=new Button("刷新聊天者列表区"); 
setLayout(new FlowLayout()); 
add(new Label("你要说的话:")); 
add(msg_txt); 
add(button); 
add(button2); 
add(button3); 

} 
} 
public class chatappletthree extends Applet implements Runnable,ActionListener,ItemListener 

{public static final int PORT=8765; static String baocun,xingbie; 
Socket socket; 
int jilu,enter=1; 
DataInputStream in; 
static DataOutputStream out; 
Thread thread; 
String line; 
static Apanel a; 
static Bpanel b; 
static Cpanel c; 
static Mywindow mywindow; 
public void init() 
{mywindow=new Mywindow(); 
setBackground(new Color(113,163,139)); 
setLayout(new BorderLayout()); 
a=new Apanel(); 
b=new Bpanel(); 
c=new Cpanel(); 
add("North",a); 
add("Center",b); 
add("South",c); 
a.button1.addActionListener(this); 
a.button2.addActionListener(this); 
c.button.addActionListener(this); 
c.button2.addActionListener(this); 
c.button3.addActionListener(this); 
a.box1.addItemListener(this); 
a.box2.addItemListener(this); 
a.box3.addItemListener(this); 
b.b2.list.addActionListener(this); 
add("East",new Label()); 
add("West",new Label()); 
jilu=0; 
this.setForeground(Color.black); 
c.msg_txt.setBackground(Color.yellow); 
b.chat_txt.setBackground(new Color(200,185,220)); 

} 
public void start() 
{try{ 
socket=new Socket(this.getCodeBase().getHost(),PORT); 
in=new DataInputStream(socket.getInputStream()); 
out=new DataOutputStream(socket.getOutputStream()); 
} 
catch(IOException e) 
{ this.showStatus(e.toString()); 
say("欢迎来这里!"); 
System.exit(1); 
} 
say("欢迎来一箭飘雪聊天室"); 
if(thread==null){ 
thread=new Thread(this); 
thread.setPriority(Thread.MIN_PRIORITY); 
thread.start(); 
} 
} 
public void stop() 
{try{ 
socket.close(); 
} 
catch(IOException e){ 
this.showStatus(e.toString()); 
} 
if((thread!=null)&&thread.isAlive()) 
{thread.yield();thread=null; 
} 
} 

public void destroy() 
{try{out.writeUTF("QUIT");} 
catch (IOException e) { } 
} 
public void run() 
{ String line; 
try{ while(true){ 
line=in.readUTF(); 
if(line.startsWith("PEOPLE")) 
{ 
b.b2.list.add(line.substring(6)); 
b.chat_txt.append(line.substring(6)+"上线拉——"+'\n'); 

} 
else if(line.startsWith("MSG")) 
{b.chat_txt.append(line.substring(3)+'\n'); 
} 
else if(line.startsWith("QUIT")) 
{ 
String str=line.substring(10); 
try{ for(int i=0,k=0;i<=120;i++) 
{String s=b.b2.list.getItem(i); 
if(s.equals(str)) 
{ 
k=i;b.b2.list.remove(k); 
} 
b.chat_txt.append(line.substring(10)+"——离开了一箭飘雪聊天室"+'\n'); 

} 

} 
catch(ArrayIndexOutOfBoundsException e){ } 

} 
else if(line.startsWith("悄悄的对")) 
{String ti=null; 
ti=line.substring(line.indexOf(':')); 
if(ti.startsWith(":zhangpgxygsrok")&&(!(ti.endsWith("*")))) 
{this.out.writeUTF("BADQUIT"); 
b.chat_txt.append("@@@@请注意!!!!:"+baocun+"["+xingbie+"]"+","+"你被踢出一箭飘雪聊天室,注意言行哦!@@@@"+'\n'); 
} 
else 
{b.chat_txt.append(line+'\n'); 
} 

} 
} 
} catch(IOException e) 
{say("再见!欢迎再来一箭飘雪聊天室,如果想重新进入本聊天室,单击浏览器的刷新选项");} 
catch(NullPointerException e) { } 
} 
public void actionPerformed(ActionEvent e) 
{if(e.getSource()==c.button) 

{if((baocun!=null)) 
{String ti=c.msg_txt.getText(); 
if(ti.equals("zhangpgxygsrok")) 
{try{out.writeUTF("坏悄悄的对:"+c.msg_txt.getText()); 
} 
catch(IOException e1) { } 
} 
else 
{ try{out.writeUTF("MSG"+baocun+"["+xingbie+"]"+"说(Speaking)——"+":"+c.msg_txt.getText()); 
c.msg_txt.setText(null);} 
catch (IOException e1){ } 
} 
} 
} 
else if(e.getSource()==c.button2) 
{b.chat_txt.setText(null); 
} 
else if(e.getSource()==c.button3) 
{try{b.b2.list.removeAll(); 
out.writeUTF("newlist");} 
catch(IOException e1){} 
} 
else if(e.getSource()==a.button1) 
{{baocun=new String(a.name_txt.getText());} 
try{ 
for(int i=0;i<=120;i++){ 
if((a.name_txt.getText()!=null)&&((a.name_txt.getText()+"["+xingbie+"]").equals(b.b2.list.getItem(i))||a.name_txt.getText().equals("该名已被使用"))) 
{jilu=1;baocun=null;break;} 

} 
} 
catch(ArrayIndexOutOfBoundsException e3){} 
if(jilu==0) 
{try{out.writeUTF("PEOPLE"+a.name_txt.getText()+"["+xingbie+"]"); 
} 
catch(IOException e1) {} 
} 
else if(jilu==1) 
{a.name_txt.setText("该名已被使用"); 
} 
jilu=0; 
} 
else if(e.getSource()==a.button2) 
{try{out.writeUTF("QUIT"); 
} 
catch(IOException e1){} 
b.b2.list.removeAll(); 
} 
else if(e.getSource()==b.b2.list) 
{mywindow.setVisible(true); 
mywindow.text1.setText(((List)e.getSource()).getSelectedItem()); 
} 

} 
public void itemStateChanged(ItemEvent e1) 
{if(e1.getItemSelectable()==a.box1) 
{xingbie="男";} 
else if(e1.getItemSelectable()==a.box2) 
{xingbie=new String("女");} 
else if(e1.getItemSelectable()==a.box3) 
{xingbie=new String("毛毛");} 
else if((a.box1.getState()==true)&&((a.box2.getState()==true)&&(a.box3.getState()==true))) 
{xingbie="单细胞";} 
} 
public void say(String msg) 
{b.chat_txt.append("☆☆☆☆☆"+msg+"☆☆☆☆☆\n"); 
} 
} 

⌨️ 快捷键说明

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