步骤 2 : 答案-为空判断 步骤 3 : 练习-数字校验 步骤 4 : 答案-数字校验 步骤 5 : 练习-账号密码验证 步骤 6 : 答案-账号密码验证 步骤 7 : 练习-黄鹤 步骤 8 : 答案-黄鹤 步骤 9 : 练习-复利计算器 步骤 10 : 答案-复利计算器 步骤 11 : 练习-进度条 步骤 12 : 答案-进度条 步骤 13 : 练习-显示文件夹复制进度条 步骤 14 : 答案-显示文件夹复制进度条
在JTextField中输入数据,在旁边加一个按钮JButton,当点击按钮的时候,判断JTextFiled中有没有数据,并使用JOptionPane进行提示
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
本视频是解读性视频,所以希望您已经看过了本答案的内容,带着疑问来观看,这样收获才多。 不建议一开始就观看视频
1分36秒 本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器。 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)。 chrome 的 视频下载插件会影响播放,如 IDM 等,请关闭或者切换其他浏览器 package gui;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import com.sun.org.apache.xerces.internal.util.SynchronizedSymbolTable;
public class TestGUI {
public static void main(String[] args) {
JFrame f = new JFrame("LoL");
f.setSize(400, 300);
f.setLocation(200, 200);
f.setLayout(new FlowLayout());
JTextField tf = new JTextField();
tf.setPreferredSize(new Dimension(80,30));
JButton b = new JButton("检测");
b.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String text = tf.getText();
if(0==text.length()){
JOptionPane.showMessageDialog(f, "文本内容为空");
tf.grabFocus();
}
}
});
f.add(tf);
f.add(b);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
在JTextField中输入数据,在旁边加一个按钮JButton,当点击按钮的时候,判断JTextFiled中的数据是否是数字,并使用JOptionPane进行提示
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
本视频是解读性视频,所以希望您已经看过了本答案的内容,带着疑问来观看,这样收获才多。 不建议一开始就观看视频
50秒 本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器。 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)。 chrome 的 视频下载插件会影响播放,如 IDM 等,请关闭或者切换其他浏览器 package gui;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import com.sun.org.apache.xerces.internal.util.SynchronizedSymbolTable;
public class TestGUI {
public static void main(String[] args) {
JFrame f = new JFrame("LoL");
f.setSize(400, 300);
f.setLocation(200, 200);
f.setLayout(new FlowLayout());
JTextField tf = new JTextField();
tf.setPreferredSize(new Dimension(80,30));
JButton b = new JButton("检测");
b.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String text = tf.getText();
try {
Integer.parseInt(text);
} catch (NumberFormatException e1) {
JOptionPane.showMessageDialog(f, "输入框内容不是整数");
tf.grabFocus();
}
}
});
f.add(tf);
f.add(b);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
准备两个JTextFiled,一个用于输入账号,一个用于输入密码。
再准备一个JButton,上面的文字是登陆 点击按钮之后,首先进行为空判断,如果都不为空,则把账号和密码,拿到数据库中进行比较(SQL语句判断账号密码是否正确),根据判断结果,使用JOptionPane进行提示。
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
本视频是解读性视频,所以希望您已经看过了本答案的内容,带着疑问来观看,这样收获才多。 不建议一开始就观看视频
2分12秒 本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器。 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)。 chrome 的 视频下载插件会影响播放,如 IDM 等,请关闭或者切换其他浏览器 package gui;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
public class TestGUI {
public static void main(String[] args) {
JFrame f = new JFrame("LoL");
f.setSize(400, 300);
f.setLocation(200, 200);
JPanel pNorth = new JPanel();
pNorth.setLayout(new FlowLayout());
JPanel pCenter = new JPanel();
JLabel lName = new JLabel("账号:");
JTextField tfName = new JTextField("");
tfName.setText("");
tfName.setPreferredSize(new Dimension(80, 30));
JLabel lPassword = new JLabel("密码:");
JPasswordField tfPassword = new JPasswordField("");
tfPassword.setText("");
tfPassword.setPreferredSize(new Dimension(80, 30));
pNorth.add(lName);
pNorth.add(tfName);
pNorth.add(lPassword);
pNorth.add(tfPassword);
JButton b= new JButton("登陆");
pCenter.add(b);
b.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String name = tfName.getText();
String password = new String( tfPassword.getPassword());
if(0==name.length()){
JOptionPane.showMessageDialog(f, "账号不能为空");
tfName.grabFocus();
return;
}
if(0==password.length()){
JOptionPane.showMessageDialog(f, "密码不能为空");
tfPassword.grabFocus();
return;
}
if(check(name, password))
JOptionPane.showMessageDialog(f, "登陆成功");
else
JOptionPane.showMessageDialog(f, "密码错误");
}
});
f.setLayout(new BorderLayout());
f.add(pNorth,BorderLayout.NORTH);
f.add(pCenter,BorderLayout.CENTER);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
public static boolean check(String name, String password) {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
boolean result = false;
try (Connection c = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8",
"root", "admin");
Statement s = c.createStatement();
) {
String sql = "select * from user where name = '" + name +"' and password = '" + password+"'";
// 执行查询语句,并把结果集返回给ResultSet
ResultSet rs = s.executeQuery(sql);
if(rs.next())
result = true;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result;
}
}
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
本视频是解读性视频,所以希望您已经看过了本答案的内容,带着疑问来观看,这样收获才多。 不建议一开始就观看视频
3分14秒 本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器。 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)。 chrome 的 视频下载插件会影响播放,如 IDM 等,请关闭或者切换其他浏览器 package gui;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class TestGUI {
public static void main(String[] args) {
JFrame f = new JFrame("LoL");
f.setSize(400, 400);
f.setLocation(200, 200);
int gap = 10;
JPanel pInput = new JPanel();
pInput.setLayout(new GridLayout(4, 3, gap, gap));
JLabel lLocation = new JLabel("地名:");
JTextField tfLocation = new JTextField("");
JLabel lType = new JLabel("公司类型:");
JTextField tfType = new JTextField("");
JLabel lCompanyName = new JLabel("公司名称:");
JTextField tfCompanyName = new JTextField("");
JLabel lBossName = new JLabel("老板名称:");
JTextField tfBossName = new JTextField("");
JLabel lMoney = new JLabel("金额:");
JTextField tfMoney = new JTextField("");
JLabel lProduct = new JLabel("产品:");
JTextField tfProduct = new JTextField("");
JLabel lUnit = new JLabel("价格计量单位");
JTextField tfUnit = new JTextField("");
pInput.add(lLocation);
pInput.add(tfLocation);
pInput.add(lType);
pInput.add(tfType);
pInput.add(lCompanyName);
pInput.add(tfCompanyName);
pInput.add(lBossName);
pInput.add(tfBossName);
pInput.add(lMoney);
pInput.add(tfMoney);
pInput.add(lProduct);
pInput.add(tfProduct);
pInput.add(lUnit);
pInput.add(tfUnit);
f.setLayout(null);
pInput.setBounds(gap, gap, 375, 120);
JButton b = new JButton("生成");
JTextArea ta = new JTextArea();
ta.setLineWrap(true);
b.setBounds(150, 120 + 30, 80, 30);
ta.setBounds(gap, 150 + 60, 375, 120);
f.add(pInput);
f.add(b);
f.add(ta);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
b.addActionListener(new ActionListener() {
boolean checkedpass = true;
@Override
public void actionPerformed(ActionEvent e) {
checkedpass = true;
checkEmpty(tfLocation,"地址");
checkEmpty(tfType,"公司类型");
checkEmpty(tfCompanyName,"公司名称");
checkEmpty(tfBossName,"老板姓名");
checkNumber(tfMoney,"金额");
checkEmpty(tfProduct,"产品");
checkEmpty(tfUnit,"价格计量单位");
String location = tfLocation.getText();
String type = tfType.getText();
String companyName = tfCompanyName.getText();
String bossName = tfBossName.getText();
String money = tfMoney.getText();
String product = tfProduct.getText();
String unit = tfUnit.getText();
if(checkedpass){
String model = "%s最大%s%s倒闭了,王八蛋老板%s吃喝嫖赌,欠下了%s个亿,"
+ "带着他的小姨子跑了!我们没有办法,拿着%s抵工资!原价都是一%s多、两%s多、三%s多的%s,"
+ "现在全部只卖二十块,统统只要二十块!%s王八蛋,你不是人!我们辛辛苦苦给你干了大半年,"
+ "你不发工资,你还我血汗钱,还我血汗钱!";
String result= String.format(model, location,type,companyName,bossName,money,product,unit,unit,unit,product,bossName);
ta.setText("");
ta.append(result);
}
}
private void checkNumber(JTextField tf, String msg) {
if(!checkedpass)
return;
String value = tf.getText();
try {
Integer.parseInt(value);
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(f, msg + " 必须是整数");
tf.grabFocus();
checkedpass = false;
}
}
private void checkEmpty(JTextField tf, String msg) {
if(!checkedpass)
return;
String value = tf.getText();
if(0==value.length()){
JOptionPane.showMessageDialog(f, msg + " 不能为空");
tf.grabFocus();
checkedpass = false;
}
}
});
}
}
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
本视频是解读性视频,所以希望您已经看过了本答案的内容,带着疑问来观看,这样收获才多。 不建议一开始就观看视频
9分49秒 本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器。 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)。 chrome 的 视频下载插件会影响播放,如 IDM 等,请关闭或者切换其他浏览器 package gui;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
@SuppressWarnings("unused")
public class TestGUI {
public static void main(String[] args) {
JFrame f = new JFrame("LoL");
f.setLayout(null);
f.setSize(400, 400);
f.setLocation(200, 200);
int gap = 10;
JPanel pInput = new JPanel();
pInput.setLayout(new GridLayout(4, 6, gap, gap));
pInput.setBounds(gap, gap, 375, 120);
JLabel lInit =new JLabel("起始资金");
JLabel lRate =new JLabel("每年收益");
JLabel lYear =new JLabel("复利年数");
JLabel lInverst=new JLabel("每年追加资金");
JTextField tfInit = new JTextField("12000");
JTextField tfRate = new JTextField("20");
JTextField tfYear = new JTextField("2");
JTextField tfInvest = new JTextField("12000");
JLabel lInitSign =new JLabel("¥");
JLabel lRateSign =new JLabel("%");
JLabel lYearSign =new JLabel("年");
JLabel lInvestSign =new JLabel("¥");
pInput.add(lInit);
pInput.add(tfInit);
pInput.add(lInitSign);
pInput.add(lRate);
pInput.add(tfRate);
pInput.add(lRateSign);
pInput.add(lYear);
pInput.add(tfYear);
pInput.add(lYearSign);
pInput.add(lInverst);
pInput.add(tfInvest);
pInput.add(lInvestSign);
JPanel pResult = new JPanel();
pResult.setLayout(new GridLayout(4, 6, gap, gap));
JLabel lBaseSum =new JLabel("本金和");
JLabel lInterestSum =new JLabel("利息和");
JLabel lTotalSum =new JLabel("本息和");
JTextField tfBaseSum = new JTextField();
JTextField tfInterestSum = new JTextField();
JTextField tfTotalSum = new JTextField();
JLabel lBaseSumSign =new JLabel("¥");
JLabel lInterestSumSign =new JLabel("¥");
JLabel lTotalSumSign =new JLabel("¥");
pResult.add(lBaseSum);
pResult.add(tfBaseSum);
pResult.add(lBaseSumSign);
pResult.add(lInterestSum);
pResult.add(tfInterestSum);
pResult.add(lInterestSumSign);
pResult.add(lTotalSum);
pResult.add(tfTotalSum);
pResult.add(lTotalSumSign);
JButton b = new JButton("计算");
b.setBounds(150, 120 + 30, 80, 30);
pResult.setBounds(gap, 150 + 60, 375, 120);
f.add(pInput);
f.add(b);
f.add(pResult);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
b.addActionListener(new ActionListener() {
boolean checkedpass = true;
@Override
public void actionPerformed(ActionEvent e) {
checkedpass = true;
check(tfInit,"起始资金");
check(tfRate,"每年收益");
check(tfYear,"复利年数");
check(tfInvest,"每年追加资金");
if(checkedpass){
int init = Integer.parseInt(tfInit.getText());
int rate = Integer.parseInt(tfRate.getText());
int year = Integer.parseInt(tfYear.getText());
int invest = Integer.parseInt(tfInvest.getText());
int baseSum = (year-1)*invest+init;
int totalSum=(int) (invest* fuli( (1+(double)rate/100),(year-1)) + init* Math.pow((1+(double)rate/100) ,year));
int interestSum = totalSum -baseSum;
tfBaseSum.setText(String.format("%,d",baseSum));
tfInterestSum.setText(String.format("%,d",interestSum));
tfTotalSum.setText(String.format("%,d",totalSum));
}
}
private int fuli(double rate, int year){
int result = 0;
for(int i=year;i>0;i--){
result+=Math.pow(rate,i);
}
return result;
}
private void check(JTextField tf, String msg) {
if(!checkedpass)
return;
String value = tf.getText();
if(0==value.length()){
JOptionPane.showMessageDialog(f, msg + " 不能为空");
tf.grabFocus();
checkedpass = false;
return;
}
try {
Integer.parseInt(value);
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(f, msg + " 必须是整数");
tf.grabFocus();
checkedpass = false;
}
}
});
}
}
设计一个线程,每隔100毫秒,就把进度条的进度+1。
从0%一直加到100% 刚开始加的比较快,以每隔100毫秒的速度增加,随着进度的增加,越加越慢,让处女座的使用者,干着急 变得多慢,根据你们和处女座同学,朋友的相处体验,自己把控
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
本视频是解读性视频,所以希望您已经看过了本答案的内容,带着疑问来观看,这样收获才多。 不建议一开始就观看视频
2分6秒 本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器。 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)。 chrome 的 视频下载插件会影响播放,如 IDM 等,请关闭或者切换其他浏览器 package gui;
import java.awt.Dimension;
import java.awt.FlowLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JProgressBar;
import javax.swing.JTextArea;
public class TestGUI {
public static void main(String[] args) {
JFrame f = new JFrame("LoL");
f.setSize(400, 300);
f.setLocation(200, 200);
f.setLayout(new FlowLayout());
JProgressBar pb = new JProgressBar();
pb.setMaximum(100);
pb.setValue(0);
pb.setStringPainted(true);
new Thread(){
public void run(){
int sleep = 100;
for (int i = 0; i < 100; i++) {
pb.setValue(i+1);
try {
Thread.sleep(sleep+ i*10);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}.start();
f.add(pb);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
改进练习-复制文件夹提供进度条,把文件复制的进度显示出来。
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
本视频是解读性视频,所以希望您已经看过了本答案的内容,带着疑问来观看,这样收获才多。 不建议一开始就观看视频
6分12秒 本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器。 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)。 chrome 的 视频下载插件会影响播放,如 IDM 等,请关闭或者切换其他浏览器 package gui;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JProgressBar;
import javax.swing.JTextField;
public class TestGUI {
static long allFileSize = 0; // 所有需要复制的文件大小
static long currentFileSizeCopied = 0;// 已复制的文件总大小
/**
* 遍历文件夹获取文件夹内容总大小
*
* @param file
*/
public static void calclateAllFilesize(File file) {
if (file.isFile()) {
allFileSize += file.length();
}
if (file.isDirectory()) {
File[] fs = file.listFiles();
for (File f : fs) {
calclateAllFilesize(f);
}
}
}
public static void main(String[] args) {
JFrame f = new JFrame("带进度条的文件夹复制");
f.setSize(450, 140);
f.setLocation(200, 200);
f.setLayout(new FlowLayout());
// 文件地址
JLabel lStr = new JLabel("源文件地址:");
JTextField strTf = new JTextField("");
strTf.setText("e:/JDK");
strTf.setPreferredSize(new Dimension(100, 30));
JLabel lDest = new JLabel("复制到:");
JTextField destTf = new JTextField("");
destTf.setText("e:/JDK2");
destTf.setPreferredSize(new Dimension(100, 30));
f.add(lStr);
f.add(strTf);
f.add(lDest);
f.add(destTf);
JButton bStartCopy = new JButton("开始复制");
bStartCopy.setPreferredSize(new Dimension(100, 30));
JLabel l = new JLabel("文件复制进度:");
JProgressBar pb = new JProgressBar();
pb.setMaximum(100);
pb.setStringPainted(true);
f.add(bStartCopy);
f.add(l);
f.add(pb);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
// 计算需要复制的文件的总大小
String srcPath = strTf.getText();
File folder = new File(srcPath);
calclateAllFilesize(folder);
// 点击开始复制
bStartCopy.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
currentFileSizeCopied = 0;
String srcPath = strTf.getText();
String destPath = destTf.getText();
new Thread(() -> copyFolder(srcPath, destPath)).start();
bStartCopy.setEnabled(false);
}
public void copyFile(String srcPath, String destPath) {
File srcFile = new File(srcPath);
File destFile = new File(destPath);
// 缓存区,一次性读取1024字节
byte[] buffer = new byte[1024];
try (FileInputStream fis = new FileInputStream(srcFile);
FileOutputStream fos = new FileOutputStream(destFile);) {
while (true) {
// 实际读取的长度是 actuallyReaded,有可能小于1024
int actuallyReaded = fis.read(buffer);
// -1表示没有可读的内容了
if (-1 == actuallyReaded)
break;
fos.write(buffer, 0, actuallyReaded);
fos.flush();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public void copyFolder(String srcPath, String destPath) {
File srcFolder = new File(srcPath);
File destFolder = new File(destPath);
if (!srcFolder.exists())
return;
if (!srcFolder.isDirectory())
return;
if (destFolder.isFile())
return;
if (!destFolder.exists())
destFolder.mkdirs();
File[] files = srcFolder.listFiles();
for (File srcFile : files) {
if (!(srcFile.isDirectory())) {
File newDestFile = new File(destFolder, srcFile.getName());
copyFile(srcFile.getAbsolutePath(), newDestFile.getAbsolutePath());
currentFileSizeCopied += srcFile.length();
double current = (double) currentFileSizeCopied / (double) allFileSize;
int progress = (int) (current * 100);
pb.setValue(progress);
if (progress == 100) {
JOptionPane.showMessageDialog(f, "复制完毕");
bStartCopy.setEnabled(true);
}
}
if (srcFile.isDirectory()) {
File newDestFolder = new File(destFolder, srcFile.getName());
copyFolder(srcFile.getAbsolutePath(), newDestFolder.getAbsolutePath());
}
}
}
});
}
}
HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。
问答区域
2024-07-16
基于 GUI 完成综合测试部分习题
回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
2023-09-04
练习-显示文件夹复制进度条
回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
2021-12-16
练习 - 显示文件夹复制进度条
2021-12-13
练习 - 进度条
2021-12-12
练习 - 复利计算器
提问太多,页面渲染太慢,为了加快渲染速度,本页最多只显示几条提问。还有 48 条以前的提问,请 点击查看
提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
|