package cat.client;
import java.applet.Applet;
import java.applet.AudioClip;
import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.URL;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Vector;
import javax.swing.AbstractListModel;
import javax.swing.BorderFactory;
import javax.swing.DefaultListModel;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.ListCellRenderer;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.border.Border;
import javax.swing.border.TitledBorder;
import cat.function.CatBean;
import cat.util.CatUtil;
class CellRenderer extends JLabel implements ListCellRenderer {
CellRenderer() {
setOpaque(true);
}
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));// 加入宽度为5的空白边框
if (value != null) {
setText(value.toString());
setIcon(new ImageIcon("images//1.jpg"));
}
if (isSelected) {
setBackground(new Color(255, 255, 153));// 设置背景色
setForeground(Color.black);
} else {
// 设置选取与取消选取的前景与背景颜色.
setBackground(Color.white); // 设置背景色
setForeground(Color.black);
}
setEnabled(list.isEnabled());
setFont(new Font("sdf", Font.ROMAN_BASELINE, 13));
setOpaque(true);
return this;
}
}
class UUListModel extends AbstractListModel{
private Vector vs;
public UUListModel(Vector vs){
this.vs = vs;
}
@Override
public Object getElementAt(int index) {
// TODO Auto-generated method stub
return vs.get(index);
}
@Override
public int getSize() {
// TODO Auto-generated method stub
return vs.size();
}
}
public class CatChatroom extends JFrame {
private static final long serialVersionUID = 6129126482250125466L;
private static JPanel contentPane;
private static Socket clientSocket;
private static ObjectOutputStream oos;
private static ObjectInputStream ois;
private static String name;
private static JTextArea textArea;
private static AbstractListModel listmodel;
private static JList list;
private static String filePath;
private static JLabel lblNewLabel;
private static JProgressBar progressBar;
private static Vector onlines;
private static boolean isSendFile = false;
private static boolean isReceiveFile = false;
// 声音
private static File file, file2;
private static URL cb, cb2;
private static AudioClip aau, aau2;
/**
* Create the frame.
*/
public CatChatroom(String u_name, Socket client) {
// 赋值
name = u_name;
clientSocket = client;
onlines = new Vector();
SwingUtilities.updateComponentTreeUI(this);
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
} catch (ClassNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (InstantiationException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IllegalAccessException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (UnsupportedLookAndFeelException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
setTitle(name);
setResizable(false);
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
setBounds(200, 100, 688, 510);
contentPane = new JPanel() {
private static final long serialVersionUID = 1L;
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(new ImageIcon("images\\聊天室1.jpg").getImage(), 0, 0,
getWidth(), getHeight(), null);
}
};
setContentPane(contentPane);
contentPane.setLayout(null);
// 聊天信息显示区域
JScrollPane scrollPane = new JScrollPane();
scrollPane.setBounds(10, 10, 410, 300);
getContentPane().add(scrollPane);
textArea = new JTextArea();
textArea.setEditable(false);
textArea.setLineWrap(true);//激活自动换行功能
textArea.setWrapStyleWord(true);//激活断行不断字功能
textArea.setFont(new Font("sdf", Font.BOLD, 13));
scrollPane.setViewportView(textArea);
// 打字区域
JScrollPane scrollPane_1 = new JScrollPane();
scrollPane_1.setBounds(10, 347, 411, 97);
getContentPane().add(scrollPane_1);
final JTextArea textArea_1 = new JTextArea();
textArea_1.setLineWrap(true);//激活自动换行功能
textArea_1.setWrapStyleWord(true);//激活断行不断字功能
scrollPane_1.setViewportView(textArea_1);
// 关闭按钮
final JButton btnNewButton = new JButton("\u5173\u95ED");
btnNewButton.setBounds(214, 448, 60, 30);
getContentPane().add(btnNewButton);
// 发送按钮
JButton btnNewButton_1 = new JButton("\u53D1\u9001");
btnNewButton_1.setBounds(313, 448, 60, 30);
getRootPane().setDefaultButton(btnNewButton_1);
getContentPane().add(btnNewButton_1);
// 在线客户列表
listmodel = new UUListModel(onlines) ;
list = new JList(listmodel);
list.setCellRenderer(new CellRenderer());
list.setOpaque(false);
Border etch = BorderFactory.createEtchedBorder();
list.setBorder(BorderFactory.createTitledBorder(etch, "<"+u_name+">"
+ "在线客户:", TitledBorder.LEADING, TitledBorder.TOP, new Font(
"sdf", Font.BOLD, 20), Color.green));
JScrollPane scrollPane_2 = new JScrollPane(list);
scrollPane_2.setBounds(430, 10, 245, 375);
scrollPane_2.setOpaque(false);
scrollPane_2.getViewport().setOpaque(false);
getContentPane().add(scrollPane_2);
// 文件传输栏
progressBar = new JProgressBar();
progressBar.setBounds(430, 390, 245, 15);
progressBar.setMinimum(1);
progressBar.setMaximum(100);
getContentPane().add(progressBar);
// 文件传输提示
lblNewLabel = new JLabel(
"\u6587\u4EF6\u4F20\u9001\u4FE1\u606F\u680F:");
lblNewLabel.setFont(new Font("SimSun", Font.PLAIN, 12));
lblNewLabel.setBackground(Color.WHITE);
lblNewLabel.setBounds(430, 410, 245, 15);
getContentPane().add(lblNewLabel);
try {
oos = new ObjectOutputStream(clientSocket.getOutputStream());
// 记录上线客户的信息在catbean中,并发送给服务器
CatBean bean = new CatBean();
bean.setType(0);
bean.setName(name);
bean.setTimer(CatUtil.getTimer());
oos.writeObject(bean);
oos.flush();
// 消息提示声音
file = new File("sounds\\呃欧.wav");
cb = file.toURL();
aau = Applet.newAudioClip(cb);
// 上线提示声音
file2 = new File("sounds\\叮.wav");
cb2 = file2.toURL();
aau2 = Applet.newAudioClip(cb2);
// 启动客户接收线程
new ClientInputThread().start();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 发送按钮
btnNewButton_1.addActionListener(new ActionL
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
CatChat.zip (54个子文件)
CatChat
CatServer
.project 385B
src
cat
function
CatBean.java 2KB
ClientBean.java 370B
server
CatServer.java 7KB
.settings
org.eclipse.jdt.core.prefs 629B
.classpath 301B
bin
cat
function
CatBean.class 3KB
ClientBean.class 784B
server
CatServer$CatClientThread.class 6KB
CatServer.class 1KB
CatClient
.project 385B
sounds
叮.wav 216KB
呃欧.wav 77KB
src
cat
client
CatChatroom.java 20KB
util
CatUtil.java 956B
function
CatBean.java 2KB
ClientBean.java 370B
login
CatLogin.java 5KB
CatResign.java 4KB
images
登陆界面.jpg 82KB
注册1.jpg 3KB
注册.jpg 2KB
聊天室1.jpg 80KB
注册.png 4KB
1.jpg 9KB
登陆.jpg 2KB
注册界面.jpg 117KB
返回.jpg 3KB
.settings
org.eclipse.jdt.core.prefs 629B
Users.properties 178B
.classpath 232B
bin
cat
client
CellRenderer.class 2KB
CatChatroom$4.class 2KB
CatChatroom$1.class 1KB
CatChatroom$ClientInputThread.class 4KB
CatChatroom$ClientInputThread$1.class 6KB
CatChatroom$5.class 3KB
CatChatroom$2.class 3KB
UUListModel.class 645B
CatChatroom$ClientInputThread$2.class 3KB
CatChatroom.class 9KB
CatChatroom$3.class 2KB
util
CatUtil.class 1KB
function
CatBean.class 3KB
ClientBean.class 784B
login
CatLogin.class 3KB
CatResign$1.class 981B
CatResign.class 3KB
CatLogin$3.class 3KB
CatLogin$1.class 727B
CatResign$3.class 3KB
CatLogin$2.class 987B
CatLogin$4.class 921B
CatResign$2.class 923B
共 54 条
- 1
白日焰火
- 粉丝: 327
- 资源: 19
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
前往页