📄 clientapplet.java
字号:
buttonBack.addActionListener(this);
buttonSend.addActionListener(this);
}
public void actionPerformed(ActionEvent e)
{
Object te=new Object();
te=e.getSource();
if(te==buttonInput)//talk to customer
{
String TalkTextSend=textInput.getText();
Message tempTalkMessage=new Message();
if(TalkTextSend.equals(""))
{
temp.warmShowMessage.showMessageDialog(temp.talkPane,"Couldn't send EmptyMessage!","MessageWarning",JOptionPane.WARNING_MESSAGE);
return;
}
if(temp.talkPaneControlPORP.toAllCustmoer.isSelected())
{
tempTalkMessage.choiceWay=2;
tempTalkMessage.talkMessage=temp.ClientAppletName+"对大家说:"+TalkTextSend+"。";
}
if(temp.talkPaneControlPORP.personalTalkButton.isSelected())
{
tempTalkMessage.choiceWay=5; //peasonal talk
tempTalkMessage.personalName=temp.personalCustName;
tempTalkMessage.customerName=temp.ClientAppletName;
tempTalkMessage.talkMessage=TalkTextSend;
String lugPersonal=temp.ClientAppletName+"对"+temp.personalCustName+"说"+TalkTextSend+"。"+"\n";
temp.talkPaneTalkAreaCenter.textTalkAreaPersonal.append(lugPersonal);
}
if(temp.talkPaneControlPORP.toSomeOne.isSelected())
{
tempTalkMessage.choiceWay=2; //public talk
tempTalkMessage.talkMessage=temp.ClientAppletName+"对"+temp.personalCustName+"说"+TalkTextSend+"。";
}
try
{
ObjectOutputStream buttonInputMessageToServer=new ObjectOutputStream(temp.toServer.getOutputStream());
buttonInputMessageToServer.writeObject(tempTalkMessage);
}
catch(SocketException t)
{
System.out.print("Couldn't Send TalkMessage to Server!"+t);
}
catch(IOException t)
{
System.out.print(t+"Couldn't Send TalkMessage to Server!");
}
textInput.setText("");
}
if(te==buttonBack)
{
///////leave chatRoon////////////
tempMessage.choiceWay=3;
tempMessage.customerName=temp.ClientAppletName;
tempMessage.talkMessage=temp.ClientAppletName+"离开了聊天室";
try
{
ObjectOutputStream buttonExitMessageToServer=new ObjectOutputStream(temp.toServer.getOutputStream());
buttonExitMessageToServer.writeObject(tempMessage);
}
catch(IOException a)
{
System.out.print("no send buttonExit"+a);
}
temp.cardObj.first(temp.mainPane);
}
if(te==buttonClearPublic)
{
temp.talkPaneTalkAreaCenter.textTalkAreaPublic.setText("");
}
if(te==buttonClearPersonal)
{
temp.talkPaneTalkAreaCenter.textTalkAreaPersonal.setText("");
}
if(te==buttonSend)
{
//////////file send/////////////
if (temp.personalCustName=="")
{
JOptionPane.showMessageDialog(this,"Please select a person to send File!!!");
return;
}
FileOpenBean fOpen=new FileOpenBean(temp);
fOpen.showFileDialog();
String nameSen=(temp.getFileName()).substring((temp.getFileName()).lastIndexOf("\\")+1,(temp.getFileName()).length());
temp.FILENAME=nameSen;
FileSender send=new FileSender(temp);
try
{
ObjectOutputStream fileToServer=new ObjectOutputStream(temp.toServer.getOutputStream());
FileData fd=new FileData();
fd.setData(send.getFileData(),temp.personalCustName);
fileToServer.writeObject(fd);
}
catch(FileNotFoundException err)
{
err.printStackTrace();
}
catch(Exception a)
{
System.out.print("no send buttonExit"+a);
}
}
}
}
/////////TalkPaneControl/////////
class TalkPaneControl extends JPanel
{
public TalkPaneControl()
{
setLayout(new GridLayout(2,1));
}
}
////////mian TalkPane////////
class TalkPane extends JPanel
{
public TalkPane()
{
setLayout(new BorderLayout());
}
}
///////////main Class///////////
public class ClientApplet extends JFrame
{
String ClientAppletName;
String FILENAME;
String SAVEFILENAME;
String personalCustName="";
Vector nameListFromServer;
String fileName="";
JPanel mainPane;
Socket toServer;
CardLayout cardObj;
JOptionPane warmShowMessage;
/////////every panel built///////////
TalkPaneControlPORP talkPaneControlPORP;
LoginPane loginPane;
TalkPane talkPane;
TalkPaneControl talkPaneControl;
TalkPaneControlButton talkPaneControlButton;
TalkPaneTalkArea talkPaneTalkArea;
TalkPaneTalkAreaList talkPaneTalkAreaList;
TalkPaneTalkAreaCenter talkPaneTalkAreaCenter;
public ClientApplet()
{
super("Client");
setSize(800,300);
warmShowMessage=new JOptionPane();
try
{
toServer=new Socket("127.0.0.1",2003);
}
catch(IOException s)
{
System.out.print(s+"Couldn't Start Server!");
}
cardObj=new CardLayout();
mainPane=new JPanel();
nameListFromServer=new Vector(1,1);
talkPaneControlPORP=new TalkPaneControlPORP(this);
loginPane=new LoginPane(this);
talkPane=new TalkPane();
talkPaneControl=new TalkPaneControl();
talkPaneControlButton=new TalkPaneControlButton(this);
talkPaneTalkArea=new TalkPaneTalkArea();
talkPaneTalkAreaList=new TalkPaneTalkAreaList(this);
talkPaneTalkAreaCenter=new TalkPaneTalkAreaCenter();
mainPane.setLayout(cardObj);
getContentPane().add(mainPane);
mainPane.add("loginPane",loginPane);
mainPane.add("talkPane",talkPane);
talkPane.add("Center",talkPaneTalkArea);
talkPane.add("South",talkPaneControl);
talkPaneTalkArea.add("Center",talkPaneTalkAreaCenter);
talkPaneTalkArea.add("East",talkPaneTalkAreaList);
/////////windows Event/////////////
this.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
Message tempMessage=new Message();
talkPaneTalkAreaCenter.textTalkAreaPersonal.setText("");
talkPaneTalkAreaCenter.textTalkAreaPublic.setText("");
tempMessage.choiceWay=3;
tempMessage.customerName=ClientAppletName;
tempMessage.talkMessage=ClientAppletName+"离开了聊天室";
try
{
ObjectOutputStream buttonExitMessageToServer=new ObjectOutputStream(toServer.getOutputStream());
buttonExitMessageToServer.writeObject((Message)tempMessage);
}
catch(IOException a)
{
System.out.print("no send buttonExit"+a);
}
dispose();
System.exit(0);
}
});
JPanel a=new JPanel();
a.setBackground(new Color(0,80,80));
a.add(talkPaneControlButton);
talkPaneControl.add(a);
talkPaneControl.add(talkPaneControlPORP);
show();
}
public void setCusName(String str)
{
talkPaneControlPORP.setCustomerName(str);
}
public void setFileName(String fName)
{
fileName=fName;
}
public String getFileName()
{
return fileName;
}
/////////mianWay go go///////////
public static void main(String a[])
{
ClientApplet tt=new ClientApplet();
MiniChat mChat=new MiniChat(tt);
}
}
///////listen from server//////////
class MiniChat extends Thread
{
ClientApplet tt;
protected Socket netChatMainFrameSocket;
protected ObjectInputStream fromServer;
protected RandomAccessFile fswriter;
public MiniChat(ClientApplet frmObj)
{
tt=frmObj;
netChatMainFrameSocket=frmObj.toServer;
start();
}
public void run()
{
try
{
for(;;)
{
fromServer=new ObjectInputStream(netChatMainFrameSocket.getInputStream());
sleep(5);
Object obj=fromServer.readObject();
if (obj instanceof Message)
{
Message tempMessage=(Message)obj;
if(tempMessage==null)
break;
String LugFormServer=tempMessage.talkMessage;
switch(tempMessage.choiceWay)
{
////////////listen name//////////
case 1:
tt.talkPaneTalkAreaList.nameList.removeAll();
tt.talkPaneTalkAreaList.nameList.setListData(tempMessage.nameListMessage);
break;
///////////listen talk//////////
case 2:
if(!(tempMessage.talkMessage.equals("")))
{
tt.talkPaneTalkAreaCenter.textTalkAreaPublic.append(LugFormServer+"\n");
tt.talkPaneTalkAreaCenter.setPosPublic();
}
break;
///////////listen edit name//////////
case 3:
tt.talkPaneTalkAreaList.nameList.removeAll();
tt.talkPaneTalkAreaList.nameList.setListData(tempMessage.nameListMessage);
break;
///////////listen name test//////////
case 4:
break;
///////////listen personal talk//////////
case 5:
if(!(tempMessage.talkMessage.equals("")))
{
tt.talkPaneTalkAreaCenter.textTalkAreaPersonal.append(tempMessage.talkMessage+"\n");
tt.talkPaneTalkAreaCenter.setPosPersonal();
}
break;
case 6:
tt.nameListFromServer=tempMessage.nameListMessage;
System.out.println(tt.nameListFromServer.size());
break;
case 7:
tt.warmShowMessage.showMessageDialog(tt.talkPaneTalkAreaCenter,"Server is closed","ContactWarning",JOptionPane.WARNING_MESSAGE);
break;
}
}
else
{
//////////list file take///////////
FileSaveBean fSave=new FileSaveBean(tt);
fSave.showFileDialog();
FileData fd=(FileData)obj;
fswriter=new RandomAccessFile( tt.SAVEFILENAME,"rw");
fswriter.write(fd.b);
}
}
}
catch(IOException err)
{
err.printStackTrace();
System.out.println("...");
}
catch(Exception err)
{
tt.warmShowMessage.showMessageDialog(tt.loginPane,"Server Not Strat","Startwarning",JOptionPane.WARNING_MESSAGE);
}
}
}
//////////FileOpenBean class/////////
class FileOpenBean
{
ClientApplet cApp;
private JFileChooser chooser;
public FileOpenBean(ClientApplet ca)
{
cApp=ca;
chooser=new JFileChooser();
chooser.setCurrentDirectory(new File("."));
}
public void showFileDialog()
{
int r =chooser.showOpenDialog(null);
if(r==JFileChooser.APPROVE_OPTION )
{
String fName=chooser.getSelectedFile().getAbsolutePath();
cApp.setFileName(fName);
}
}
}
//////////FileSaveBean class/////////
class FileSaveBean
{
ClientApplet cApp;
private JFileChooser chooser;
public FileSaveBean(ClientApplet ca)
{
cApp=ca;
chooser=new JFileChooser();
chooser.setCurrentDirectory(new File("."));
}
public void showFileDialog()
{
int r =chooser.showSaveDialog(null);
if(r==JFileChooser.APPROVE_OPTION )
{
String fName=chooser.getSelectedFile().getAbsolutePath();
cApp.SAVEFILENAME=fName;
cApp.setFileName(fName);
}
}
}
/////////FileSender class//////////
class FileSender
{
private RandomAccessFile fileData;
ClientApplet cApp;
private byte[] b;
public FileSender(ClientApplet ca)
{
try{
cApp=ca;
fileData=new RandomAccessFile(ca.getFileName(),"r");}
catch(Exception e)
{
e.printStackTrace();
}
}
public byte[] getFileData() throws Exception
{
b=new byte[(int)fileData.length()];
fileData.read(b);
return b;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -