⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 controller.java

📁 这个QQ通信系统项目是我之前发过类似的一个大的整合
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
					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 + -