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

📄 clientreceivethread.java

📁 模仿腾讯QQ的
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
						btnSave.setActionCommand("save");
						btnSave.addActionListener(myactionlistener);
						btnNo.setBorder(null);
						btnNo.setActionCommand("no");
						btnNo.addActionListener(myactionlistener);


						
						chatframe.getChatcontent().getJtpchatcontent().setCaretPosition(content.getLength());
						chatframe.getChatcontent().getJtpchatcontent().insertComponent(btnSave);
						chatframe.getChatcontent().getJtpchatcontent().setCaretPosition(content.getLength());
						chatframe.getChatcontent().getJtpchatcontent().insertComponent(btnNo);	
					
						content.insertString(content.getLength(), "\n\n", style);
						int pos = chatframe.getChatcontent().getJtpchatcontent().getDocument().getLength();
						chatframe.getChatcontent().getJtpchatcontent().scrollRectToVisible(new Rectangle(pos,pos));
						chatframe.getChatcontent().getJtpchatcontent().setEditable(false);	
					}
					
					
				}			
				
				
				
				//文件接收确认包
				
				if (revPackage.getType().equals(SrcPackage.FILEREV_TYPE)) {										
				
						List data = (List) revPackage.getData().get("CONTENT");
						// 确认接收
						if (data.get(0).equals("Y")) {
							try {
								Socket CSocket = new Socket(data.get(1).toString(), Integer.parseInt(data.get(2).toString()));		
								String tUNO = revPackage.getTo();
								String fUNO = revPackage.getFrom();
								if (CSocket != null) {
									// 创建线程
									FileSendThread fileSendThread = new FileSendThread(fUNO, tUNO, CSocket,this);
									fileSendThread.start();
									
//									创建样式文档
									StyledDocument content= chatframe.getChatcontent().getJtpchatcontent().getStyledDocument();
									// 获取当前样式
									SimpleAttributeSet style = new SimpleAttributeSet();								
									chatframe.getChatcontent().getJtpchatcontent().setEditable(true);									
									chatframe.getChatcontent().getJtpchatcontent().setCaretPosition(content.getLength());
									chatframe.getChatcontent().getJtpchatcontent().insertComponent(probar);
							
									content.insertString(content.getLength(), "\n\n", style);
									int pos = chatframe.getChatcontent().getJtpchatcontent().getDocument().getLength();
									chatframe.getChatcontent().getJtpchatcontent().scrollRectToVisible(new Rectangle(pos,pos));									
									chatframe.getChatcontent().getJtpchatcontent().setEditable(false);	
									
									
									
								}
							} catch (IOException e) {
								// TODO 自动生成 catch 块
								e.printStackTrace();
							}
			
						} else if (data.get(0).equals("N"))   {
							// 确认拒绝
							StyledDocument content =   chatframe.getChatcontent().getJtpchatcontent().getStyledDocument();
							SimpleAttributeSet style = new SimpleAttributeSet(); // 样式			
							chatframe.getChatcontent().getJtpchatcontent().setEditable(true);		
							String fileName = ((ArrayList) revPackage.getData().get("CONTENT")).get(1).toString();		
							try {
								content.insertString(content.getLength(), "您拒绝接收文件  \""
										+ fileName + "\" \n\n", style);
			
							} catch (BadLocationException e1) {
								// TODO 自动生成 catch 块
								e1.printStackTrace();
							}
			
							chatframe.getChatcontent().getJtpchatcontent().setEditable(false);
						}
					
				}
				
				//文件发送完接收
				if (revPackage.getType().equals(SrcPackage.FILEEND_TYPE)) {
					
					if(revPackage.getTo().equals(chatframe.getUser().getUNO())){

						StyledDocument content =   chatframe.getChatcontent().getJtpchatcontent().getStyledDocument();
						SimpleAttributeSet style = new SimpleAttributeSet(); // 样式			
						chatframe.getChatcontent().getJtpchatcontent().setEditable(true);		
	
						try {
							content.insertString(content.getLength(), "文件已经保存到目录:  \""+ FilePath.FileRevPath + "\" \n\n", style);
		
						} catch (BadLocationException e1) {
							// TODO 自动生成 catch 块
							e1.printStackTrace();
						}
		
						chatframe.getChatcontent().getJtpchatcontent().setEditable(false);
					}else{
						StyledDocument content =   chatframe.getChatcontent().getJtpchatcontent().getStyledDocument();
						SimpleAttributeSet style = new SimpleAttributeSet(); // 样式			
						chatframe.getChatcontent().getJtpchatcontent().setEditable(true);		
	
						try {
							content.insertString(content.getLength(), "文件发送,成功完成!" + "\n", style);
		
						} catch (BadLocationException e1) {
							// TODO 自动生成 catch 块
							e1.printStackTrace();
						}
		
						chatframe.getChatcontent().getJtpchatcontent().setEditable(false);
					}
				}
			
			} catch (IOException e) {
				// TODO 自动生成 catch 块
	//			e.printStackTrace();
//				JOptionPane.showMessageDialog(null, "服务器已断开!", "提示",JOptionPane.INFORMATION_MESSAGE);
//				System.exit(0);
				tag=true;				
			} catch (ClassNotFoundException e) {
				// TODO 自动生成 catch 块
				System.out.println("error");
	//			e.printStackTrace();
				tag=true;	
			} catch (BadLocationException e) {
				// TODO 自动生成 catch 块
				e.printStackTrace();
			}	
			
		}
	}
	class MyActionListener implements ActionListener {

		private FileReceiveThread filerevThread;
		public void actionPerformed(ActionEvent e) {
			
			if(e.getActionCommand().equals("save")){
				JFileChooser filesave = new JFileChooser();				

				if (filesave.showDialog(chatframe, "另存为:") == JFileChooser.APPROVE_OPTION) {
					File file = filesave.getSelectedFile();
					FilePath.FileRevPath = file.getAbsolutePath();					
				}				
				// 创建ServerSocket
				try {
					ServerSocket serverSocket = new ServerSocket(5599);
					// 创建线程
					if (serverSocket != null) {
						filerevThread = new FileReceiveThread(serverSocket,chatframe);
						filerevThread.start();
					}
				} catch (IOException e1) {
					// TODO 自动生成 catch 块
					e1.printStackTrace();
				}
				
				// 发文件确认包
				SrcPackage filerevPackage = new SrcPackage();
				filerevPackage.setFrom(revPackage.getFrom());
				filerevPackage.setTo(revPackage.getTo());
				filerevPackage.setType(SrcPackage.FILEREV_TYPE);

				List OKList = new ArrayList();
				OKList.add("Y");
				
				String IP = null;
				try {
					IP = InetAddress.getLocalHost().getHostAddress();
				} catch (UnknownHostException e2) {
					// TODO 自动生成 catch 块
					e2.printStackTrace();
				}				
				int port = filerevThread.getServerSocket().getLocalPort();
				OKList.add(IP);
				OKList.add(String.valueOf(port));

				HashMap data = new HashMap();
				data.put("CONTENT", OKList);
				filerevPackage.setData(data);

				try {
					oos.writeObject(filerevPackage);
				} catch (IOException e1) {
					// TODO 自动生成 catch 块
					e1.printStackTrace();
				}
				
				MyActionListener myactionlistener = new MyActionListener();
				//创建样式文档
				StyledDocument content= chatframe.getChatcontent().getJtpchatcontent().getStyledDocument();
				// 获取当前样式
				SimpleAttributeSet style = new SimpleAttributeSet(); 							//当前时间

				try {
					content.insertString(content.getLength(),"您同意了接收文件 \""+ ((List) revPackage.getData().get("FILECONTENT")).get(0).toString()+ "\"正在建立连接,如果要中止接收文件,请按 ", style); 
					btnCancle = new JButton();
					btnCancle.setBorder(null);	
					btnCancle.setActionCommand("cancle");
					btnCancle.addActionListener(myactionlistener);
					chatframe.getChatcontent().getJtpchatcontent().setCaretPosition(content.getLength());
					chatframe.getChatcontent().getJtpchatcontent().insertComponent(btnCancle);
					content.insertString(content.getLength(), "\n\n", style);

				} catch (BadLocationException e1) {
					// TODO 自动生成 catch 块
					e1.printStackTrace();
				}

				btnSave.setEnabled(false);
				btnNo.setEnabled(false);
				
			
			}
			if(e.getActionCommand().equals("no")){
				//发文件确认包
				SrcPackage filerevPackage = new SrcPackage();
				filerevPackage.setFrom(chatframe.getUser().getUNO());
				filerevPackage.setTo(filerevPackage.getFrom());
				filerevPackage.setType(SrcPackage.FILEREV_TYPE);
				List NoList = new ArrayList();
				NoList.add("N");
				NoList.add(((List)revPackage.getData().get("FILECONTENT")).get(0));

				HashMap data = new HashMap();
				data.put("CONTENT", NoList);
				filerevPackage.setData(data);
				try {
					oos.writeObject(filerevPackage);
				} catch (IOException e1) {
					// TODO 自动生成 catch 块
					e1.printStackTrace();
				}

				btnSave.setEnabled(false);
				btnNo.setEnabled(false);
				
//				创建样式文档
				StyledDocument content= chatframe.getChatcontent().getJtpchatcontent().getStyledDocument();
				// 获取当前样式
				SimpleAttributeSet style = new SimpleAttributeSet(); 							//当前时间

				try {
					content.insertString(content.getLength(),"您已经中止接收文件", style);
					content.insertString(content.getLength(), "\n\n", style);
				} catch (BadLocationException e1) {
					// TODO 自动生成 catch 块
					e1.printStackTrace();
				} 
				
					
					
			}if(e.getActionCommand().equals("cancle")){
				
				//k*******
				
			}
		
		
		}
	}

	/**
	 * 设置线程循环的参数
	 * @return
	 */
	public void setTag(boolean tag) {
		this.tag = tag;
	}
	public ObjectOutputStream getOos() {
		return oos;
	}
	public JProgressBar getProbar() {
		return probar;
	}
	public void setProbar(JProgressBar probar) {
		this.probar = probar;
	}
	public ChatFrame getChatframe() {
		return chatframe;
	}


}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -