?? clientapplet.java
字號(hào):
// 程序:多人聊天室客戶端程序
// 范例文件:ClientApplet.java
import java.io.*;
import java.awt.*;
import java.net.*;
import java.applet.*;
import java.awt.event.*;
public class ClientApplet extends Applet
implements Runnable,ActionListener
{
int sPort; //服務(wù)器程序接口
String sName; //服務(wù)器位置
Socket cSocket; //連往服務(wù)器的插座
boolean dead;
PrintStream write; //I/O管道
BufferedReader read;
Thread T; //用來(lái)接收訊息的線程
Font F;
Panel south;
Button sendMessage;
TextArea Message;
TextField send;
public void init()
{
setLayout(new BorderLayout()); //使用BorderLayout
dead = false;
//建立接口相關(guān)AWT組件
F = new Font("Dialog",Font.BOLD,16);
south = new Panel();
sendMessage = new Button("傳送訊息");
Message = new TextArea();
send = new TextField(40);
south.add(send);
south.add(sendMessage);
Message.setFont(F); //設(shè)定字型
Message.setEditable(false); //不可編輯
Message.append("歡迎使用良葛格的聊天室\n\n");
Message.setBackground(Color.black); //設(shè)定背景顏色
Message.setForeground(Color.white); //設(shè)定前景顏色
add(south,BorderLayout.SOUTH);
add(Message,BorderLayout.CENTER);
sendMessage.addActionListener(this); //注冊(cè)按鈕的事件處理方法
try
{
sPort = 6633; //指定服務(wù)器接口
sName = getDocumentBase().getHost(); //指定服務(wù)器位置
cSocket = new Socket(sName,sPort); //建立插座
//建立I/O管道
write = new PrintStream(cSocket.getOutputStream());
read = new BufferedReader(
new InputStreamReader(cSocket.getInputStream()));
}
catch(UnknownHostException E) //建立插座失敗
{
Message.append("發(fā)生異常: 無(wú)法識(shí)別的主機(jī)!");
sendMessage.setEnabled(false);
}
catch(IOException E) //建立I/O管道失敗
{
Message.append("發(fā)生異常: 建立I/O管道失敗!");
sendMessage.setEnabled(false);
}
T = new Thread(this); //建立接收訊息線程
T.start(); //啟動(dòng)線程
}
public void run()
{
String m;
while(!dead)
{
try
{
m = read.readLine(); //接收訊息
if(m != null)
{
Message.append("\n" + m); //將訊息加入TextArea中
}
}
catch(IOException E) //發(fā)生異常
{
Message.append("\n\n遠(yuǎn)程服務(wù)器已關(guān)閉或網(wǎng)絡(luò)聯(lián)機(jī)發(fā)生錯(cuò)誤...");
Message.append("\n\n請(qǐng)嘗試重新聯(lián)機(jī)...");
sendMessage.setEnabled(false);
break;
}
}
}
public void finalize()
{
try
{
read.close();
write.close();
cSocket.close(); //關(guān)閉服務(wù)器程序聯(lián)機(jī)
}
catch(IOException E){}
cSocket = null; //釋放資源
}
//=====實(shí)現(xiàn)ActionListener=========================================
public void actionPerformed(ActionEvent e)
{
if(send.getText().equals("")) //輸入為空白
{
return;
}
else if(send.getText().equals("bye"))
{
dead = true;
Message.append("\n已結(jié)束聯(lián)機(jī).....");
}
write.println(send.getText()); //發(fā)送訊息
send.setText(""); //清除文字區(qū)域
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -