📄 jprogressthread.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 + -