java复制文件显示进度条代码_java在复制文件时使用进度条

【实例简介】

【实例截图】

dae81f37dcdaaba285be789084e52445.png

【核心代码】

package com.mingrisoft;

import java.awt.EventQueue;

import java.awt.FileDialog;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JButton;

import javax.swing.JFileChooser;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JTextField;

import javax.swing.SwingUtilities;

import javax.swing.UIManager;

import javax.swing.border.EmptyBorder;

public class UserMonitorFrame extends JFrame implements Runnable {

/**

*

*/

private static final long serialVersionUID = -746616564388262788L;

private JPanel contentPane;

private JTextField pathTextField;

private JTextField saveTextField;

/**

* Launch the application.

*/

public static void main(String[] args) {

EventQueue.invokeLater(new Runnable() {

public void run() {

try {

UserMonitorFrame frame = new UserMonitorFrame();

frame.setVisible(true);

} catch (Exception e) {

e.printStackTrace();

}

}

});

}

/**

* Create the frame.

*/

public UserMonitorFrame() {

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setBounds(100, 100, 481, 231);

contentPane = new JPanel();

contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));

setContentPane(contentPane);

contentPane.setLayout(null);

setTitle("在复制文件时使用进度条");

JPanel panel = new JPanel();

panel.setBounds(0, 0, 465, 262);

contentPane.add(panel);

panel.setLayout(null);

JLabel pathLabel = new JLabel("文件地址:");

pathLabel.setBounds(42, 45, 72, 15);

panel.add(pathLabel);

pathTextField = new JTextField();

pathTextField.setBounds(124, 42, 197, 21);

panel.add(pathTextField);

pathTextField.setColumns(10);

JButton pathButton = new JButton("选择文件");

pathButton.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent arg0) {

do_pathButton_actionPerformed(arg0);

}

});

pathButton.setBounds(341, 41, 93, 23);

panel.add(pathButton);

JLabel saveLabel = new JLabel("复制地址:");

saveLabel.setBounds(42, 104, 72, 15);

panel.add(saveLabel);

saveTextField = new JTextField();

saveTextField.setBounds(124, 101, 197, 21);

panel.add(saveTextField);

saveTextField.setColumns(10);

JButton saveButton = new JButton("选择地址");

saveButton.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent arg0) {

do_saveButton_actionPerformed(arg0);

}

});

saveButton.setBounds(341, 100, 93, 23);

panel.add(saveButton);

JButton copyButton = new JButton("确定复制");

copyButton.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent arg0) {

do_copyButton_actionPerformed(arg0);

}

});

copyButton.setBounds(169, 145, 93, 23);

panel.add(copyButton);

}

// 定义获取只可以选择文件夹的选择框

public JFileChooser getChooser() {

JFileChooser fd = new JFileChooser();

String windows = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel";

try {

UIManager.setLookAndFeel(windows);

} catch (Exception e) {

e.printStackTrace();

}// 设置见面风格

SwingUtilities.updateComponentTreeUI(fd);// 使设置的界面风格生效

fd.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); // 指示只显示目录

fd.showOpenDialog(this);

return fd;

}

//选择要复制的文件按钮的单击事件

protected void do_pathButton_actionPerformed(ActionEvent arg0) {

FileDialog fd=new FileDialog(this);

fd.setVisible(true);

String filePath = fd.getDirectory() fd.getFile();

pathTextField.setText(filePath);

}

//选择保存文件地址的按钮单击事件

protected void do_saveButton_actionPerformed(ActionEvent arg0) {

JFileChooser fd = getChooser();

if ((fd.getSelectedFile() != null)

&& (!fd.getSelectedFile().equals(""))) {

String strPath = fd.getSelectedFile().getPath();

saveTextField.setText(strPath);

}

}

//确定复制按钮单击事件

protected void do_copyButton_actionPerformed(ActionEvent arg0) {

Thread thread = new Thread(this);

thread.start();

}

//应用多线程技术实现读取操作

@Override

public void run() {

ProgressMonitorTest test = new ProgressMonitorTest();

String path = pathTextField.getText();

String save = saveTextField.getText();

test.useProgressMonitor(this,path,save path.substring(path.lastIndexOf("."),path.length()));

}

}

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Java Swing组件库中的JProgressBar来实现上传文件进度条。具体实现步骤如下: 1. 创建一个JProgressBar对象,并将其添加到Swing窗口中。 2. 在上传文件,通过监听上传的进度来更新JProgressBar的值。 3. 当上传完成后,将JProgressBar的值设置为100%。 下面是一个简单的实现示例: ```java import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.*; public class UploadFile extends JFrame implements ActionListener { private JProgressBar progressBar; public UploadFile() { super("上传文件"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); getContentPane().setLayout(new BorderLayout()); // 创建进度条并添加到窗口中 progressBar = new JProgressBar(0, 100); progressBar.setStringPainted(true); getContentPane().add(progressBar, BorderLayout.CENTER); // 添加上传文件按钮 JButton uploadButton = new JButton("上传文件"); uploadButton.setActionCommand("upload"); uploadButton.addActionListener(this); getContentPane().add(uploadButton, BorderLayout.SOUTH); pack(); setLocationRelativeTo(null); } public void actionPerformed(ActionEvent e) { if ("upload".equals(e.getActionCommand())) { // 弹出文件选择对话框选择要上传的文件 JFileChooser fileChooser = new JFileChooser(); int result = fileChooser.showOpenDialog(this); if (result == JFileChooser.APPROVE_OPTION) { File file = fileChooser.getSelectedFile(); uploadFile(file); } } } private void uploadFile(File file) { try { // 模拟上传文件的过程 FileInputStream fis = new FileInputStream(file); long fileSize = file.length(); byte[] buffer = new byte[1024]; int bytesRead = 0; long totalBytesRead = 0; while ((bytesRead = fis.read(buffer)) != -1) { // 更新进度条的值 totalBytesRead += bytesRead; int progress = (int) (totalBytesRead * 100 / fileSize); progressBar.setValue(progress); } fis.close(); // 上传完成,将进度条的值设置为100% progressBar.setValue(100); JOptionPane.showMessageDialog(this, "上传完成!"); } catch (IOException e) { JOptionPane.showMessageDialog(this, "上传失败:" + e.getMessage()); } } public static void main(String[] args) { UploadFile uploadFile = new UploadFile(); uploadFile.setVisible(true); } } ``` 在这个示例中,我们使用了JProgressBar来显示上传文件的进度,并通过模拟上传文件的过程来更新进度条的值。当上传完成后,我们将进度条的值设置为100%并弹出一个消息框来通知用户上传完成。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值