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

📄 jprogressthread.java

📁 基于TCP/IP的远程控制访问程序 可以对远程的计算机惊醒控制管理!
💻 JAVA
字号:
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JProgressBar;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JButton;
import java.awt.Dialog;
import java.awt.Dimension;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Image;
import java.awt.Toolkit;
import javax.swing.event.ChangeListener;
import javax.swing.event.ChangeEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.net.InetAddress;

public class JprogressThread extends Thread implements ChangeListener
 {
 	Ctree ser;
 	JProgressBar progressbar;
 	JFrame AddHost;
    JLabel  address;
    JLabel  rate;
    JLabel  time;
    JLabel  filesize;
    JLabel  filepath;
        	
 	public JprogressThread(Object ser)
 	 {
 	 	this.ser=(Ctree)ser;
 	 	progressbar=new JProgressBar();
 	 }	 	 
 	public void run()
 	 { 	
 	   //必须做为一个独立的窗体才能显示进度
       while(!ser.copy); 
  	   AddHost=new JFrame();
  	   AddHost.setTitle("下载文件......");
  	   Image titlephone=Toolkit.getDefaultToolkit().createImage("./icons/letter.gif");
       AddHost.setIconImage(titlephone); 
  	   AddHost.addWindowListener
		  (
        	new WindowAdapter()
        	     {
			      public void windowClosing(WindowEvent e)
			        {
				      AddHost.dispose();
			        }
		         }
		   );
		address=new JLabel();   
        progressbar.setOrientation(JProgressBar.HORIZONTAL);
        progressbar.setMinimum(0);
        progressbar.setMaximum(100);
        progressbar.setValue(0);
        progressbar.setStringPainted(true);
        progressbar.addChangeListener(this);       
        progressbar.setPreferredSize(new Dimension(400,30));
        rate=new JLabel();
        time=new JLabel();      
        filesize=new JLabel();
        filepath=new JLabel();  
        		   
  	    JPanel p1=new JPanel(new BorderLayout());
  	    JPanel p2=new JPanel(new BorderLayout());
//  	    JPanel p11=new JPanel(new BorderLayout());
  	    JPanel p12=new JPanel(new FlowLayout(FlowLayout.LEFT)); 
  	    try
  	     {
  	     	InetAddress local=InetAddress.getLocalHost();  
            address.setText("正在下载: \n"+ser.tree.getLastSelectedPathComponent()+" 从 "+ser.ConnectIpText.getText());
         }
        catch(Exception e2){}    
           time.setText("剩余时间: ");
           rate.setText("速率: "); 
           filepath.setText("下载到: "+ser.selectFile.getParent());
       String filestr;      	    
 	   if(ser.ByteNum>1000000)
 	     filestr=(float)ser.ByteNum/1048576+"MB";
 	   else if(ser.ByteNum>1024)
 	     filestr=(float)ser.ByteNum/1024+"KB";
 	   else
 	     filestr=ser.ByteNum+"字节 ";  
 	    filesize.setFont(new Font("宋体",Font.PLAIN,15));  
 	    filepath.setFont(new Font("宋体",Font.PLAIN,15));       	 	
  	    address.setFont(new Font("宋体",Font.PLAIN,15));
        rate.setFont(new Font("宋体",Font.PLAIN,15)); 
  	    time.setFont(new Font("宋体",Font.PLAIN,15));      
  	    p12.add(time);
  	    p12.add(filesize);
 	    
  	    p2.add("North",address);
  	    p2.add("Center",progressbar);
  	    p2.add("South",p12);
  	    
  	    p1.add("North",p2);
  	    p1.add("Center",filepath);  	    
  	    p1.add("South",rate); 
  	  //  p1.add("Center",progressbar);
        AddHost.getContentPane().add("Center",p2);
        AddHost.getContentPane().add("South",p1);
        AddHost.setResizable(false);
  	    AddHost.setSize(400,140);
  	    AddHost.setVisible(true);
  	    System.out.println(ser.ByteNum+" "+ser.finish);
  	    while(ser.finish<ser.ByteNum)
  	     {
  	       progressbar.setValue((int)((float)ser.finish/ser.ByteNum*100));
 	       if(ser.finish>1000000)
 	          filesize.setText("("+filestr+" - "+(float)ser.finish/1048576+"MB 已下载)");
 	       else if(ser.finish>1024)
 	          filesize.setText("("+filestr+" - "+(float)ser.finish/1024+"KB 已下载)");
 	       else
 	          filesize.setText("("+filestr+" - "+ser.finish+"字节 已下载)"); 	       	       
  	       try
  	        {
  	          Thread.sleep(1000);
  	        }
  	       catch(Exception e1){}   
  	     }   
  	     progressbar.setValue((int)((float)ser.finish/ser.ByteNum*100));
 	       if(ser.finish>1000000)
 	          filesize.setText("("+filestr+" - "+(float)ser.finish/1048576+"MB 已下载)");
 	       else if(ser.finish>1024)
 	          filesize.setText("("+filestr+" - "+(float)ser.finish/1024+"KB 已下载)");
 	       else
 	          filesize.setText("("+filestr+" - "+ser.finish+"字节 已下载)");   	     
  	       try
  	        {
  	          Thread.sleep(1000);
  	        }
  	       catch(Exception e3){}   
         AddHost.dispose(); 	     	    
 
  }
    	
   public void stateChanged(ChangeEvent e1)
    {
  	       if(ser.Jrate!=0)
  	         time.setText("剩余时间:"+(ser.ByteNum-ser.finish)/(4*ser.Jrate*1024)+"秒");   
           time.repaint();           
           rate.setText("速率:"+4*ser.Jrate+"KB/秒");
           rate.repaint(); 
  	       ser.Jrate=0;              	
     /*   int value = progressbar.getValue();
        
        if(e1.getSource() == progressbar)
        {
           address.setText("目前已完成进度:"+Integer.toString(value)+" %");
           time.setText("目前已完成进度:"+Integer.toString(value)+" %");
           rate.setText("目前已完成进度:"+Integer.toString(value)+" %"); 
           address.repaint();
           time.repaint();
           rate.repaint();
        }*/
    }  
 } 

⌨️ 快捷键说明

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