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 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料