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

📄 transfiledialog.java

📁 JAVA做的QQ软件,感兴趣的可以看看,收藏依旧
💻 JAVA
字号:
import java.awt.BorderLayout;
import javax.swing.JPanel;
import javax.swing.JDialog;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JFrame;
import javax.swing.ImageIcon;
import java.awt.event.*;
import java.io.PrintStream;
import java.net.Socket;
import javax.swing.JFileChooser;
import java.net.*;
import java.io.*;
import javax.swing.JOptionPane;
import javax.swing.UIManager;

public class TransFileDialog extends JDialog implements Runnable {

	private JPanel jContentPane = null;
	private JButton refuseButton = null;
	private JLabel msgLabel = null;
	private Thread t;
	private int time;
	private JLabel iconLabel = null;
	private JFrame fFrame = null;
	private JButton acceptButton = null;
	private boolean hasSend = false;	

	private JButton getRefuseButton() {
		if (refuseButton == null) {
			refuseButton = new JButton();
			refuseButton.setText("拒  绝");
			refuseButton.setForeground(new java.awt.Color(255,102,102));
			refuseButton.setFont(new java.awt.Font("黑体", java.awt.Font.BOLD, 14));
			refuseButton.setBackground(new java.awt.Color(197,234,252));
			refuseButton.setSize(new java.awt.Dimension(115,28));
			refuseButton.setLocation(new java.awt.Point(31,47));
			refuseButton.setSelected(true);
			refuseButton.addActionListener(new ActionListener()
					{
						public void actionPerformed(ActionEvent e)
						{
							hasSend = true;
							
							//  释放消息窗口
							dispose();
							
							//  发送拒收文件信息给服务器
							sendMsgToServer("Refuse");
						}
					}					
			);
		}
		return refuseButton;
	}	
	public TransFileDialog(JFrame fatherFrame,boolean model,String inMsg) {
		super(fatherFrame,model);
		initialize(inMsg,fatherFrame);
		try
		{
			t=new Thread(this);
			t.start();
			
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
	}	
	private void initialize(String inMsg,JFrame inFrame) {
		this.fFrame = inFrame;
		this.setContentPane(getJContentPane());
		
		msgLabel.setText(inMsg);
		acceptButton.setToolTipText(inMsg);
		
		this.setSize(331, 117);
		this.setModal(false);
		this.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
		this.setResizable(false);
		this.setTitle("Fetion消息窗口");
		this.setVisible(true);		
		this.setLocationRelativeTo(null);
		
	}

	
	private JPanel getJContentPane() {
		if (jContentPane == null) {
			iconLabel = new JLabel();
			iconLabel.setIcon(new ImageIcon(getClass().getResource("/pictures/msg.JPG")));
			iconLabel.setLocation(new java.awt.Point(14,11));
			iconLabel.setSize(new java.awt.Dimension(27,27));
			iconLabel.setText("");
			msgLabel = new JLabel();
			msgLabel.setBounds(new java.awt.Rectangle(52,12,257,25));
			msgLabel.setFont(new java.awt.Font("楷体_GB2312", java.awt.Font.BOLD, 14));
			msgLabel.setForeground(java.awt.Color.blue);
			msgLabel.setText("");
			jContentPane = new JPanel();
			jContentPane.setLayout(null);
			jContentPane.setBackground(new java.awt.Color(245,255,255));
			jContentPane.add(getRefuseButton(), null);
			jContentPane.add(msgLabel, null);
			jContentPane.add(iconLabel, null);
			jContentPane.add(getAcceptButton(), null);
		}
		return jContentPane;
	}
	public void run()
	{
		for(time=15;time>0;time--)
		{			
			refuseButton.setText("拒  绝(" + Integer.toString(time) + ")");
			try 
			{
				t.sleep(1000);
			} 
			catch (Exception e) 
			{
				System.out.println("倒计时异常:" + e);
				e.printStackTrace();
			}
		}
		
		//  释放消息窗口		
		dispose();
		
		//  如果倒计时完毕,接收用户依然没有做出选择则默认拒绝接收
		if(!hasSend)
		{
			//  发送拒收文件信息给服务器
			sendMsgToServer("Refuse");		
		}
		
	}	
	private JButton getAcceptButton() {
		if (acceptButton == null) {
			acceptButton = new JButton();
			acceptButton.setLocation(new java.awt.Point(177,47));
			acceptButton.setBackground(new java.awt.Color(197,234,252));
			acceptButton.setText("接  收");
			acceptButton.setFont(new java.awt.Font("黑体", java.awt.Font.BOLD, 14));
			acceptButton.setForeground(new java.awt.Color(255,102,102));
			acceptButton.setSelected(false);			
			acceptButton.setSize(new java.awt.Dimension(114,28));
			acceptButton.addActionListener(new ActionListener()
				{
					public void actionPerformed(ActionEvent e)
					{
						hasSend = true;
						
						//  释放消息窗口
						dispose();
						
						//  设置文件保存对话框
						JFileChooser fileChooser = newFileChooser(); 			
						int returnVal = fileChooser.showSaveDialog(null);						
						if(returnVal == JFileChooser.CANCEL_OPTION)
						{
							
							//  发送拒收文件信息给服务器
							sendMsgToServer("Refuse");
						}
						if(returnVal == JFileChooser.APPROVE_OPTION) 
						{
							
							//  发送接收文件信息给服务器
							//sendMsgToServer("Accept");			
							try
							{
								Socket toServer = new Socket(ServerIP.ADDRESS,ServerIP.TRANSE_FILE_PORT);
													
								//  发送接收文件信号给服务器
								PrintStream psToServer = new PrintStream(toServer.getOutputStream());
								psToServer.println("Accept");							
								
								//  接收服务器发送的文件
								String saveFileName = fileChooser.getSelectedFile().getName();					
								File file = new File(fileChooser.getCurrentDirectory(),saveFileName); 
								file.createNewFile();
								RandomAccessFile raf = new RandomAccessFile(file,"rw");
								
								InputStream fileStreamFromClient = new DataInputStream(new BufferedInputStream(toServer.getInputStream()));
								
								byte[] buf = new byte[2048];
								int num = fileStreamFromClient.read(buf);
								while(num != (-1))
								{   
									//  判断是否读完所有数据,如果没有读完则执行以下命令
									
									//  将缓存buf的数据写往临时文件newFile.txt 
			                 		raf.write(buf,0,num);
			                 		
			                 		//  顺序写文件字节 
			                 		raf.skipBytes(num);
			                 		
			                 		//  继续从网络中读取文件 
			                 		num = fileStreamFromClient.read(buf);
			         			} 
			         			
			         			//  关闭数据流
			         			psToServer.close();			         			
			          			fileStreamFromClient.close(); 
			          			raf.close();
			          			JOptionPane.showMessageDialog(null,"文件传输完毕!");											
							}
							catch(Exception ex)
							{				
								System.out.println("文件接收失败!");
								ex.printStackTrace();					
							}
						}
					}
				}							
			);
		}
		return acceptButton;
	}
	
	//  定义函数sendMsgToServer()
	public void sendMsgToServer(String inMsg)
	{
		try
		{
			Socket toServer = new Socket(ServerIP.ADDRESS,ServerIP.TRANSE_FILE_PORT);
													
			//  发送接收或拒收文件信息给服务器
			PrintStream psToServer = new PrintStream(toServer.getOutputStream());
			psToServer.println(inMsg);
			psToServer.close();
			toServer.close();
		}
		catch(IOException e)
		{
			System.out.println("发送接收或拒收文件信息失败!");
			e.printStackTrace();
		}
	}
	
	//  定制文件打开或保存对话框
	public JFileChooser newFileChooser()
	{
		JFileChooser fileChooser = new JFileChooser();    		
		ExamFileFilter jpgFilter = new ExamFileFilter("jpg", "JPEG Compressed Image Files");
		ExamFileFilter gifFilter = new ExamFileFilter("gif", "GIF Image Files");
		ExamFileFilter javaFilter = new ExamFileFilter(new String[] {"java", "class"}, "Java Files");		

		fileChooser.addChoosableFileFilter(gifFilter);
		fileChooser.addChoosableFileFilter(javaFilter);	
		fileChooser.addChoosableFileFilter(jpgFilter);
		fileChooser.setCurrentDirectory(new File("./TempFiles"));		
		return fileChooser;
	}
	public static void main(String[] args)
	{
		new TransFileDialog(new JFrame(),false,"renbo发送chatroom.jpg给你!");
	}
}  //  @jve:decl-index=0:visual-constraint="10,10"  

⌨️ 快捷键说明

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