ccnb666 2017-10-31 04:43 采纳率: 0%
浏览 1656

java swing进度条只显示100.过程不显示问题

public void showFolderCopyProgressBar()
{
JFrame jf=new JFrame("复制文件夹");
jf.setSize(400,300);
jf.setLocation(200,200);
jf.setLayout(new FlowLayout());
JLabel jl1=new JLabel("源文件地址:");
JTextField jtf1=new JTextField();
jtf1.setText("D:\Project");
jtf1.setPreferredSize(new Dimension(80,25));
JLabel jl2=new JLabel("复制到:");
JTextField jtf2=new JTextField();
jtf2.setPreferredSize(new Dimension(80,25));
jtf2.setText("D:\新建文件夹");
JPanel jp=new JPanel();
jp.add(jl1);
jp.add(jtf1);
jp.add(jl2);
jp.add(jtf2);
jf.add(jp);
JPanel jp2=new JPanel();
JButton jb=new JButton("开始复制");
jp2.add(jb);
JLabel jl3=new JLabel("文件复制进度:");
jp2.add(jl3);
JProgressBar jpb=new JProgressBar();
jpb.setMaximum(100);
jpb.setMinimum(0);
jpb.setValue(0);
jpb.setStringPainted(true);
jp2.add(jpb);
jf.add(jp2);
jb.addActionListener(new ActionListener() {
long cur=0;
public void aecursively(File file,File result) throws Exception
{
long all=count(jtf1.getText());
if(!result.exists())
{
result.mkdirs();
}
File[] f=file.listFiles();
for(int i=0;i<f.length;i++)
{
if(f[i].isFile()){
File target = new File(result,f[i].getName());
target.createNewFile();
FileInputStream fis = new FileInputStream(f[i]);
FileOutputStream fos = new FileOutputStream(target);
byte[] b = new byte[(int) f[i].length()];
fis.read(b);
fos.write(b);
cur=cur+f[i].length();
double pro=(double)cur/(double)all;
System.out.println((int)(pro*100));
Thread T =new Thread() {
public void run()
{
jpb.setValue((int)(pro*100));
try {
sleep(1000);
}catch (Exception e)
{
e.printStackTrace();
}
}
};
T.start();
// jpb.setValue((int)(pro*100));
if (jpb.getValue()==100)
{
JOptionPane.showMessageDialog(jf,"复制成功");
break;
}
}
else
{
File ff=new File(result,f[i].getName());
ff.mkdirs();
aecursively(f[i],ff);
}
}
}
public void actionPerformed(ActionEvent e) {
File f1 = new File(jtf1.getText());
File[] f = f1.listFiles();
File f2 = new File(jtf2.getText());
try
{
aecursively(f1,f2);
}catch (Exception E)
{
E.printStackTrace();
}

        }
    });
    jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    jf.setVisible(true);

// File f1 = new File(jtf1.getText());
// File f2 = new File(jtf2.getText());
// if (!jtf2.getText().equals("")) {
// new ProgressBarUpThread(jpb, f1, f2).start();
// }

}
  • 写回答

1条回答 默认 最新

  • qq_35351807 2017-11-02 12:23
    关注

    你加个log4文件试试呗

    评论

报告相同问题?

悬赏问题

  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序