📄 controller.java
字号:
bw.write(str, 0, str.length());
bw.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (bw != null) {
bw.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
/**
* @param qq
*
* 发送文件
*/
public void sendFile(int qq) {
if (!map.isEmpty()) {
if (map.get(qq) != null) {
JFileChooser fc = new JFileChooser();
fc.addChoosableFileFilter(new JAVAFileFilter("rar"));
fc.addChoosableFileFilter(new JAVAFileFilter("wma"));
fc.addChoosableFileFilter(new JAVAFileFilter("txt"));
fc.addChoosableFileFilter(new JAVAFileFilter("jpg"));
fc.addChoosableFileFilter(new JAVAFileFilter("mp3"));
fc.addChoosableFileFilter(new JAVAFileFilter("exe"));
int Y_N = fc.showOpenDialog(null);
if (Y_N == JFileChooser.APPROVE_OPTION) {
if (fc.getSelectedFile() != null) {
File file = fc.getSelectedFile();
System.out.println(file.length());
byte[] buf = new byte[(int) file.length()];
BufferedInputStream bis = null;
try {
bis = new BufferedInputStream(new FileInputStream(
file));
bis.read(buf);
Embody embody = new Embody();
embody.setOrder(Order.SEND_FILE);
embody.setObjMessage(buf);
embody.setFile(file.getName());
embody.setSourceID(mqq);
embody.setTargerID(qq);
myClient.send(embody);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (bis != null) {
try {
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
} else {
JOptionPane.showMessageDialog(qq2009, "对方不在线!请停止发送!", "",
JOptionPane.WARNING_MESSAGE);
}
} else {
JOptionPane.showMessageDialog(qq2009, "对方不在线!请停止发送!", "",
JOptionPane.WARNING_MESSAGE);
}
}
/**
*
* 收到消息后让消息图形跳动的方法
*/
public void receiveMsg() {
b_Flag = true;
JLabel jLabel = qq2009.getJLabel24();
while (b_Flag) {
try {
aplay.soundPlay("/sound/system.wav");
jLabel.setBounds(3, 3, 14, 14);
Thread.sleep(200);
jLabel.setBounds(0, 0, 20, 20);
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
/**
* 查看消息并弹出相应的提示
*
*/
public void checkMsg() {
b_Flag = false;
if (order.equals(Order.H_LEAVEWORD)) {
order = "";
for (int i = 0; i < list2.size(); i++) {
int Y_N = JOptionPane.showConfirmDialog(qq2009,
"你有新的消息,请注意查收!\n消息来自:" + list2.get(i).getSource()
+ "\n消息类型:" + list2.get(i).getType()
+ "\n消息发送时间:" + list2.get(i).getTime()
+ "\n你是否同意?", "消息", JOptionPane.YES_NO_OPTION);
if (Y_N == JOptionPane.YES_OPTION) {
MyBean myBean = new MyBean();
myBean.setQq(list2.get(i).getSource());
Embody embody = new Embody();
embody.setOrder(Order.ADD_ME);
embody.setObjMessage(myBean);
myClient.send(embody);
} else {
MyBean myBean = new MyBean();
myBean.setQq(list2.get(i).getSource());
Embody embody = new Embody();
embody.setOrder(Order.FRIEND_REFUSE);
embody.setObjMessage(myBean);
myClient.send(embody);
}
}
}
if (order.equals(Order.ADD_YOU)) {
order = "";
int Y_N = JOptionPane.showConfirmDialog(qq2009, fqq + "加你为好友",
"添加好友", JOptionPane.YES_NO_OPTION,
JOptionPane.INFORMATION_MESSAGE);
if (Y_N == JOptionPane.YES_OPTION) {
boolean b = true;
if (!list.isEmpty()) {
for (MyBean bean : list) {
if (bean.getQq() == fqq) {
b = false;
MyBean myBean = new MyBean();
myBean.setQq(fqq);
Embody embody = new Embody();
embody.setOrder(Order.FRIEND_ACCEPT);
embody.setObjMessage(myBean);
myClient.send(embody);
}
}
}
if (b) {
int Y = JOptionPane.showConfirmDialog(qq2009, "你是否加他为好友?",
"添加好友", JOptionPane.YES_NO_OPTION,
JOptionPane.INFORMATION_MESSAGE);
if (Y == JOptionPane.YES_OPTION) {
MyBean myBean = new MyBean();
myBean.setQq(fqq);
Embody embody = new Embody();
embody.setOrder(Order.ADD_ME);
embody.setObjMessage(myBean);
myClient.send(embody);
} else {
MyBean myBean = new MyBean();
myBean.setQq(fqq);
Embody embody = new Embody();
embody.setOrder(Order.FRIEND_ACCEPT);
embody.setObjMessage(myBean);
myClient.send(embody);
}
}
} else {
MyBean myBean = new MyBean();
myBean.setQq(fqq);
Embody embody = new Embody();
embody.setOrder(Order.FRIEND_REFUSE);
embody.setObjMessage(myBean);
myClient.send(embody);
}
}
if (order.equals(Order.ADD_ME)) {
order = "";
int Y_N = JOptionPane.showConfirmDialog(qq2009, fqq
+ "同意你加她为好友,并加你为好友?", "添加好友", JOptionPane.YES_NO_OPTION,
JOptionPane.INFORMATION_MESSAGE);
if (Y_N == JOptionPane.YES_OPTION) {
MyBean myBean = new MyBean();
myBean.setQq(fqq);
Embody embody = new Embody();
embody.setOrder(Order.ME_ACCEPT);
embody.setObjMessage(myBean);
myClient.send(embody);
} else {
MyBean myBean = new MyBean();
myBean.setQq(fqq);
Embody embody = new Embody();
embody.setOrder(Order.ME_REFUSE);
embody.setObjMessage(myBean);
myClient.send(embody);
}
}
if (order.equals(Order.FRIEND_ACCEPT)) {
order = "";
JOptionPane.showMessageDialog(qq2009, fqq + "同意你加她为好友!", "添加好友",
JOptionPane.INFORMATION_MESSAGE);
}
if (order.equals(Order.FRIEND_REFUSE)) {
order = "";
JOptionPane.showMessageDialog(qq2009, fqq + "拒绝你她为好友", "添加好友",
JOptionPane.INFORMATION_MESSAGE);
}
if (order.equals(Order.ME_ACCEPT)) {
order = "";
JOptionPane.showMessageDialog(qq2009, fqq + "同意你他为好友", "添加好友",
JOptionPane.INFORMATION_MESSAGE);
}
if (order.equals(Order.ME_REFUSE)) {
order = "";
JOptionPane.showMessageDialog(qq2009, fqq + "拒绝你他为好友", "添加好友",
JOptionPane.INFORMATION_MESSAGE);
}
if (order.equals(Order.H_MSG)) {// 收到好友发过来的聊天信息
order = "";
if (table.get(lqq) != null) {
table.get(lqq).setVisible(true);
}
}
}
/**
* 定义一个方法把服务端发来的信息解析成Embody
*
* @param obj
*/
@SuppressWarnings( { "deprecation", "unchecked" })
public void parseEmbody(Object obj) {
Embody embody = (Embody) obj;
order = embody.getOrder();
System.out.println(order);
if (order.equals(Order.S_REGISTER)) { // 注册成功show一个pane
MyBean myBean = (MyBean) embody.getObjMessage();
Date date = new Date();
JOptionPane.showMessageDialog(null, "恭喜你,注册成功!请记住你的号码:\n"
+ myBean.getQq() + "\n注册日期:" + date.toLocaleString(),
"注册成功", 1);
login.getRegister().dispose();
login.setVisible(true);
}
if (order.equals(Order.S_LOGIN)) {
myBean = (MyBean) embody.getObjMessage();
mqq = myBean.getQq(); // 列出QQ
login.dispose();
qq2009 = new QQ2009(this);
qq2009.setVisible(true);
qq2009.getJLabel().setIcon(
new ImageIcon(getClass().getResource(
"/picture/" + myBean.getPortrait())));
qq2009.getJLabel1().setText(
"*" + myBean.getNickName() + "*" + "<" + mqq + ">");
if (myBean.getState().equals(Order.STATE_ON)) {
qq2009.getJLabel().setEnabled(true);
} else {
qq2009.getJLabel().setEnabled(false);
}
QQProgress qqProgress = new QQProgress(login);
qq2009.setVisible(false);
qqProgress.setVisible(true);
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
qqProgress.dispose();
qq2009.setVisible(true);
}
if (order.equals(Order.RE_LOGIN)) {
order = "";
JOptionPane.showMessageDialog(null, "对不起,该帐号已经登录!\n请不要重复登录!",
"登录失败", JOptionPane.ERROR_MESSAGE);
}
if (order.equals(Order.F_LOGIN)) {
order = "";
JOptionPane.showMessageDialog(null, "对不起,你输入的帐号或密码有误!\n请重试!",
"登录失败", JOptionPane.ERROR_MESSAGE);
}
if (order.equals(Order.H_LEAVEWORD)) {
list2 = (List<Message>) embody.getObjMessage();
receiveMsg();
}
if (order.equals(Order.ME_UPDATE)) {
if (jTree != null) {
qq2009.getJScrollPane().remove(jTree);
jTree = null;
System.gc();
}
friendTree = new FriendTree(this);
jTree = friendTree.chushi();
list = (List<MyBean>) embody.getObjMessage();
for (int i = 0; i < list.size(); i++) {
MyBean myBean = list.get(i);
if (myBean.getState().equals(Order.STATE_ON)) {
friendTree.addonlinefriend(myBean.getQq());
} else {
friendTree.addnotonlinefriend(myBean.getQq());
}
}
jTree.setCellRenderer(new DefaultTreeCellRenderer() {
private static final long serialVersionUID = 1123133123L;
public Component getTreeCellRendererComponent(JTree tree,
Object value, boolean sel, boolean expanded,
boolean leaf, int row, boolean hasFocus) {
super.getTreeCellRendererComponent(tree, value, sel,
expanded, leaf, row, hasFocus);
String name = value.toString();
for (int i = 0; i < list.size(); i++) {
if (name.equals(list.get(i).getQq() + "")) {
this.setIcon(new ImageIcon(getClass().getResource(
"/picture/" + list.get(i).getPortrait())));
}
}
return this;
}
});
jTree.setBackground(Color.white);
jTree.setBounds(0, 0, 500, 500);
jTree.setRootVisible(false);
jTree.setRowHeight(0);
jTree.setShowsRootHandles(true);
qq2009.getJScrollPane().setViewportView(jTree);
}
if (order.equals(Order.S_EXACT_SEARCH)) {
MyBean myBean = (MyBean) embody.getObjMessage();
Vector<Object> v = new Vector<Object>();
v.add(myBean.getQq());
v.add(myBean.getNickName());
v.add(myBean.getSex());
v.add(myBean.getAge());
v.add(myBean.getInfo());
Vector<Object> v2 = new Vector<Object>();
v2.add(v);
SearchFriends.searchFriends.setJTable(v2);
}
if (order.equals(Order.F_EXACT_SEARCH)) {
order = "";
JOptionPane.showMessageDialog(null, "你输入的号码有误!该号码不存在!,\n请重试!",
"查找好友", JOptionPane.WARNING_MESSAGE);
}
if (order.equals(Order.S_BASIC_SEARCH)) {
list3 = (List<MyBean>) embody.getObjMessage();
Vector<Object> v2 = new Vector<Object>();
for (MyBean myBean : list3) {
Vector<Object> v = new Vector<Object>();
v.add(myBean.getQq());
v.add(myBean.getNickName());
v.add(myBean.getSex());
v.add(myBean.getAge());
v.add(myBean.getInfo());
v2.add(v);
}
SearchFriends.searchFriends.setJTable(v2);
}
if (order.equals(Order.RE_ADD)) {
order = "";
JOptionPane.showMessageDialog(null, "该好友已在你的好友列表中,\n请不要重复添加!",
"添加好友", JOptionPane.WARNING_MESSAGE);
}
if (order.equals(Order.F_LIVE_LINE)) {
order = "";
JOptionPane.showMessageDialog(qq2009, "对方不在线!", "",
JOptionPane.WARNING_MESSAGE);
}
if (order.equals(Order.ADD_YOU)) {// 收到服务端发来的对方加我的信息
MyBean myBean = (MyBean) embody.getObjMessage();
fqq = myBean.getQq();
aplay.soundPlay("/sound/msg.wav");
receiveMsg(); // 调用让消息图形跳动的方法
}
if (order.equals(Order.ADD_ME)) {// 收到服务端发来的对方同意我加她的信息
MyBean myBean = (MyBean) embody.getObjMessage();
fqq = myBean.getQq();
map.put(fqq, myBean);
friendTree.addonlinefriend(fqq);
receiveMsg();
}
if (order.equals(Order.FRIEND_ACCEPT)) {// 收到服务端发来的对方同意我加她的信息
MyBean myBean = (MyBean) embody.getObjMessage();
fqq = myBean.getQq();
map.put(fqq, myBean);
friendTree.addonlinefriend(fqq);
receiveMsg();
}
if (order.equals(Order.FRIEND_REFUSE)) {// 收到服务端发来的对方拒绝我加她的信息
MyBean myBean = (MyBean) embody.getObjMessage();
fqq = myBean.getQq();
receiveMsg();
}
if (order.equals(Order.ME_ACCEPT)) {// 收到服务端发来的我同意他加我后,他又同意我加他的信息
MyBean myBean = (MyBean) embody.getObjMessage();
fqq = myBean.getQq();
map.put(fqq, myBean);
friendTree.addonlinefriend(fqq);
receiveMsg();
}
if (order.equals(Order.ME_REFUSE)) {// 收到服务端发来的对方拒绝我加他的信息
MyBean myBean = (MyBean) embody.getObjMessage();
fqq = myBean.getQq();
receiveMsg();
}
if (order.equals(Order.UDP_AFTER_ME)) {
MyBean myBean = (MyBean) embody.getObjMessage();
map.put(myBean.getQq(), myBean);
}
if (order.equals(Order.UDP_BEFOR_ME)) {
Map<Integer, MyBean> hashMap = (HashMap<Integer, MyBean>) embody
.getObjMessage();
Set<Integer> set = hashMap.keySet();
for (Integer i : set) {
map.put(i, hashMap.get(i));
}
}
if (order.equals(Order.CHAT)) {
MyBean myBean = (MyBean) embody.getObjMessage();
int fqq = myBean.getQq();
if (!set.contains(fqq)) {
set.add(fqq);
startUDP(fqq);
}
}
if (order.equals(Order.F_OFF_LINE)) {
MyBean myBean = (MyBean) embody.getObjMessage();
friendTree.liveLine(myBean.getQq());
aplay.soundPlay("/sound/ring.wav");
}
if (order.equals(Order.F_ON_LINE)) {
MyBean myBean = (MyBean) embody.getObjMessage();
friendTree.upLine(myBean.getQq());
aplay.soundPlay("/sound/up.wav");
}
if (order.equals(Order.RECEIVE_FILE)) {
aplay.soundPlay("/sound/ring.wav");
int Y_N = JOptionPane.showConfirmDialog(qq2009, embody
.getSourceID()
+ "给你发送了:\n" + embody.getFile() + "文件,\n是否接收?", "传送文件",
JOptionPane.YES_NO_CANCEL_OPTION,
JOptionPane.INFORMATION_MESSAGE);
if (Y_N == JOptionPane.YES_OPTION) {
JFileChooser fc = new JFileChooser(); // 只能选择路径
fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
fc.showSaveDialog(null);
BufferedOutputStream bos = null;
if (fc.getSelectedFile() != null) {
File file = fc.getSelectedFile();
try {
bos = new BufferedOutputStream(new FileOutputStream(
new File(file + embody.getFile())));
bos.write((byte[]) embody.getObjMessage());
bos.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (bos != null) {
bos.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
}
/**
* ChangeInfo(QQ2009, Controller)中被调用
*
* @return
*/
public MyBean getMyBean() {
return myBean;
}
public int getMqq() {
return mqq;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -