📄
字号:
import java.net.*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
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);
addWindowListener(new WindowAdapter())
{
public void windowClosing(WindowEvent e)
{
setVisible(false);
System.exit(0);
}
}
}
}
public void actionPerforemd(ActionEvent e)
{
if(e.getSource()==button1)
{
try
{
chatapplet.out.writeUTF("悄悄地对"+ text1.getText() +" 说 "+
text2.getText()+"(我是" + chatapplet.name+")");
}
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("男",false,sex);
box2=new Checkbox("女",false,sex);
box3=new Checkbox("中性",true,sex);
add(new Label("输入呢称"));
add(name_txt); add(box1); add(box2); add(box3);
add(button1); add(button2);
add(new Label(" "));
}
}
class Bpanel extends Panel
{
TextArea chat_txt; B2panel b2;
Bpanel()
{
chat_txt=new TextArea(25,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()
{
msg_txt=new TextField(44);
button=new Button("刷新谈话区") ;
button2=new Button("刷新聊天者列表") ;
setLayout(new FlowLayout());
add(new Label("你要说的话"));
add(button); add(button2); add(button3);
}
}
public class chatapplet extends Applet implements Runnable ,ActionListener ,ItemListener
{
public static final int PORT =1234;
static String name ,xinbie ;
Socket socket; int jilu ,enter =0;
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.white);
b.chat_txt.setBackground(new Color(200,185,220));
b.chat_txt.setFont(new Font("TimeRoman",Font.PLAIN,12));
}
}
public void start()
{
this.getCodeBase().getHost()
try
{
socket=new Socket(this.getCodeBase().getHost(),port);
in=new DataInputStream(socket.getInputStream());
out=new DataOutputStream(socket.getInputStream());
}
catch(IOException e)
{
this.showStatus(e.toString());
say(" 欢迎来这里!!!");
}
say(" 欢迎来到聊天室 ");
if(thread==null)
{
thread=new Thread(this);
thread.setPriority(Thread.MIN_PRIORITY);
thread.start();
}
}
public void stop()
{
try(out.writeUTF("QUIT");
catch(IOException e) {}
}
public void destroy()
{
try{ socket.close();}
catch(IOException e)
{
this.showStatus(e.toString());
if(thread!=null)&&thread.isAlive())
{thread.yield();thread=null;}
}
}
public void run()
{
String line;
try{while(true)
{
line=in.readUTF();
if(line.startsWith("PEOPLE"))
{
String listString=line;
if(line.endsWith("*"))
{listString=line.substring(0,(line.length()-1);}
b.b2.list.add(listString.substring(6));
if(!line.endsWith("*"))
{b.chat_txt.append(line.substring(6)+" 进入聊天室" + ′\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_txr.append(line.substring(10)+"高兴离开了聊天室"+′\n′);
}
}
}
catch(ArrayIndexOutOfBoundsException e){}
}
else if(line.startsWith("MSG"))
{
b.chat_txt.append(line.substring(3)+′\n′);
}
else if(line.startsWith("悄悄地对"))
{
b.chat_txt.append(line+′\n′);
}
}
}
catch(IOException e)
{
say("再见!欢迎再来聊天室,如果想重新进入请单击浏览器的刷新选项");
}
catch(NullPointerException e) {}
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==a.button1)
{
name=new String(a.name_txt.getText());
try
{
for(int i=0;i<120;i++)
{
if((a.name_txt.getTxt()!=null)&&((a.name_txt.getText()+
"["+xingbie+"]").equals(b.b2.list.getItem(i))||a.name_txt.getText().equals("该名已经被使用")))
{jilu=1;name=null;break}
}
}
catch(ArrayIndexOutOfBoundsException e3)
{}
if(jilu==0)
{
try
{out.writeUTF("PEOPLE"+a.name_txt.getText()+"["+xingbie+"]");
enter=1;
}
catch(IOException e1) {}
}
else if(e.getSource()==a.button2)
{
try
{
out.writeUTF("QUIT");
enter=0;
}
catch(IOException e1) {}
b.b2.list.removeAll();
}
else if (e.getSource()==c.button&&enter==1)
{
if ((name!=null))
{
try
{
out.writeUTF("MSG"+name+"["+xingbie+"]"+"说" +":"+
c.msg_txt.getText());
c.msg_txt.getText(null);
}
catch(IOException e1) {}
}
}
else if(e.getSource()==b.b2.list&&enter=1)
{
mywindow.setVisible(true);
mywindow.text1.setText(((List)e.getSource()).getSelectedItem());
}
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) {}
}
}
public void itemStateChanged(ItemEvent e1)
{
if(e1.getItemSelectable()==a.box1)
{
xingbie=new String("男");
}
else if(e1.getItemSelectable()==a.box2)
{ xingbie=new String("女");}
else if (e1.getItemSelectable()==a.box3)
{ xingbie=new String("中性");}
}
public void say(String msg)
{
b.chat_txt.append("*****"+msg+"*****\n");
}
// }
}
----------------------------------------------
-
2005-05-31 12:46:42 鲜花(0) 鸡蛋(0)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -