資源簡介
《分布式系統》課程的一個作業,作為一個小Demo給大家參考一下。其實聊天窗口有點小bug,就交給你們去處理吧^_^

代碼片段和文件信息
package?client;
import?javax.swing.Jframe;
import?javax.swing.JTextArea;
import?java.awt.BorderLayout;
import?javax.swing.JScrollPane;
import?java.awt.Component;
import?java.awt.Rectangle;
import?java.awt.Font;
import?java.awt.event.WindowAdapter;
import?java.awt.event.WindowEvent;
import?java.io.IOException;
import?java.net.Socket;
import?java.text.SimpleDateFormat;
import?java.util.Date;
import?java.util.HashMap;
import?javax.swing.JOptionPane;
import?javax.swing.JPanel;
import?javax.swing.JButton;
import?javax.swing.JTextField;
import?javax.swing.SwingUtilities;
import?java.awt.event.ActionListener;
import?java.awt.event.ActionEvent;
public?class?ClientChatDlg?extends?Jframe?implements?ActionListener?{
????private?JTextArea?contentArea;
????private?static?HashMap?dlgMap?=?new?HashMap();
????private?JTextField?textField;
????private?Socket?peerSocket;
????
????//是被動連接
????private?boolean?isPassive?=?false;
????//是新連接
????private?boolean?isNewConnect?=?true;
????
????public?ClientChatDlg(final?String?title?Socket?socket?Component?parent?boolean?isPassive)?{
????????this.isPassive?=?isPassive;
????????
????????//當前窗口加入映射,用于判斷窗口是否已經打開
????????dlgMap.put(title?this);?????
????????settitle(title);
????????
????????setBounds(new?Rectangle(0?0?350?350));
????????JScrollPane?scrollPane?=?new?JScrollPane();
????????getContentPane().add(scrollPane?BorderLayout.CENTER);
????????
????????contentArea?=?new?JTextArea();
????????contentArea.setFont(new?Font(“宋體“?Font.PLAIN?13));
????????contentArea.setLineWrap(true);
????????contentArea.setEditable(false);
????????scrollPane.setViewportView(contentArea);
????????
????????JPanel?panelSend?=?new?JPanel();
????????getContentPane().add(panelSend?BorderLayout.SOUTH);
????????
????????textField?=?new?JTextField();
????????panelSend.add(textField);
????????textField.setColumns(10);
????????
????????JButton?btnSend?=?new?JButton(“發送“);
????????btnSend.addActionListener(this);
????????btnSend.setFont(new?Font(“微軟雅黑“?Font.PLAIN?12));
????????panelSend.add(btnSend);
????????
????????setLocationRelativeTo(parent);
????????
????????addWindowListener(new?WindowAdapter()?{
????????????@Override
????????????public?void?windowClosing(WindowEvent?e)?{
????????????????//關閉對話框時,從映射中移除它
????????????????dlgMap.remove(title);
????????????????//關閉套接字
????????????????closeChatSocket();
????????????????super.windowClosing(e);
????????????}
????????});
????????
????????setChatSocket(socket);
????}
????
????public?void?setChatSocket(Socket?socket)?{
????????if?(peerSocket?!=?null)
????????????closeChatSocket();
????????this.peerSocket?=?socket;
????????
????????//開始接收消息
????????new?ReceiveThread().start();
????}
????
????private?void?closeChatSocket()?{
????????try?{
????????????peerSocket.close();
????????}?catch?(IOException?e1)?{
????????????
????????}
????}
????
????/
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2015-10-27?20:10??P2P聊天軟件\
?????文件??????496640??2016-01-19?23:23??P2P聊天軟件\P2P聊天軟件?設計文檔.doc
?????目錄???????????0??2015-10-27?19:37??P2P聊天軟件\源代碼\
?????目錄???????????0??2015-10-27?19:12??P2P聊天軟件\源代碼\client\
?????文件????????5367??2015-10-27?17:17??P2P聊天軟件\源代碼\client\ClientChatDlg.java
?????文件????????3484??2015-10-27?17:01??P2P聊天軟件\源代碼\client\ClientCore.java
?????文件????????9038??2015-10-27?16:50??P2P聊天軟件\源代碼\client\ClientMainDlg.java
?????目錄???????????0??2015-10-27?19:12??P2P聊天軟件\源代碼\server\
?????文件????????2338??2015-06-16?14:11??P2P聊天軟件\源代碼\server\ServerConfigPanel.java
?????文件????????5597??2015-10-26?11:23??P2P聊天軟件\源代碼\server\ServerCore.java
?????文件????????3879??2015-10-27?17:32??P2P聊天軟件\源代碼\server\ServerMainDlg.java
?????文件????????2178??2015-10-24?16:19??P2P聊天軟件\源代碼\server\ServerStartedPanel.java
- 上一篇:Java從入門到精通第4版光盤內容
- 下一篇:基于websocket的聊天室源碼
評論
共有 條評論