日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java 进度条 不更新_java进度条不动怎么解决?

發(fā)布時間:2024/8/1 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 进度条 不更新_java进度条不动怎么解决? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在編寫完進度條后,我們有時候會遇到它完全不動的情況,小伙伴們知道是什么原因嗎?下面聽小編為你們講解講解。

進度條不動可能是因為這個原因,“當應用程序在事件線程中執(zhí)行長時間的操作時,會阻塞正常的AWT事件處理,因此阻止了重繪操作的發(fā)生”,即API本身就是線程不安全的。造成這個錯誤的原因,就是在run方法內(nèi)直接寫:

progressBar.setValue(jd);

最終修改示例:import?java.awt.Color;

import?java.awt.Dimension;

import?java.awt.GridLayout;

import?java.awt.Rectangle;

import?java.awt.event.ActionEvent;

import?java.awt.event.ActionListener;

import?java.io.BufferedInputStream;

import?java.io.BufferedOutputStream;

import?java.io.File;

import?java.io.FileInputStream;

import?java.io.FileOutputStream;

import?java.io.IOException;

import?javax.swing.JButton;

import?javax.swing.JFileChooser;

import?javax.swing.JFrame;

import?javax.swing.JLabel;

import?javax.swing.JPanel;

import?javax.swing.JProgressBar;

import?javax.swing.JTextField;

public?class?Exp10_3?extends?JFrame?implements?Runnable

{

boolean?b?=?false;?//?線程執(zhí)行的標志

int?jd?=?0;?//?當前進度

long?sum?=?0;?//?當前共復制的長度

JButton?button1?=?new?JButton("被復制");

JTextField?beCyFile?=?new?JTextField(30);

JButton?button2?=?new?JButton("復制到");

JTextField?CyToDir?=?new?JTextField(30);

JButton?Start?=?new?JButton("開始復制");

JLabel?label?=?new?JLabel("進度");

JProgressBar?progressBar?=?new?JProgressBar();

void?initUI()

{

JPanel?top1?=?new?JPanel();

JPanel?top2?=?new?JPanel();

JPanel?end?=?new?JPanel();

top1.add(button1);

top1.add(beCyFile);

top2.add(button2);

top2.add(CyToDir);

setLayout(new?GridLayout(4,?1));

add(top1);

add(top2);

add(Start);

progressBar.setStringPainted(true);?//?設(shè)置進度條上字符串可顯示

progressBar.setBackground(Color.GREEN);?//?設(shè)置進度條顏色

end.add(label);

end.add(progressBar);

add(end);

button1.addActionListener(new?ActionListener()

{

//?將選擇文件的絕對路徑顯示到被復制后的文本框內(nèi)

@Override

public?void?actionPerformed(ActionEvent?e)

{

JFileChooser?fc?=?new?JFileChooser();

fc.setFileHidingEnabled(false);?//?顯示隱藏文件

fc.setMultiSelectionEnabled(false);?//?允許多選

fc.setDialogTitle("請選擇要復制的文件");

if?(fc.showOpenDialog(Exp10_3.this)?==?JFileChooser.APPROVE_OPTION)

{

beCyFile.setText(fc.getSelectedFile()

.getAbsolutePath());

CyToDir.setText(fc.getSelectedFile()

.getParent());?//?獲取file文件的父目錄(強大的API)?自我設(shè)定:默認復制到同一目錄

}

}

});

button2.addActionListener(new?ActionListener()

{

@Override

public?void?actionPerformed(ActionEvent?e)

{

JFileChooser?fc?=?new?JFileChooser();

fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);?//?僅僅能選擇目錄

fc.setDialogTitle("請選擇要復制到的路徑");

if?(fc.showOpenDialog(Exp10_3.this)?==?JFileChooser.APPROVE_OPTION)

{

CyToDir.setText(fc.getSelectedFile()

.getAbsolutePath());

}

}

});

Start.addActionListener(new?ActionListener()

{

@Override

public?void?actionPerformed(ActionEvent?e)

{

jd?=?0;

b?=?true;

try

{

String?file1Path?=?beCyFile.getText();

File?file1?=?new?File(beCyFile.getText());?//?被復制的文件

String?file2Path?=?CyToDir.getText()?+?"\\copy"?+?file1.getName();?//?復制完后新文件路徑名

File?file2?=?new?File(file2Path);?//?新建復制文件

BufferedInputStream?bis?=?new?BufferedInputStream(new?FileInputStream(file1Path));

BufferedOutputStream?bos?=?new?BufferedOutputStream(new?FileOutputStream(file2Path));

byte[]?be?=?new?byte[1024?*?1024];?//?之前定義為b和boolean重復了?屏蔽了全局標志b

int?len?=?bis.read(be);

long?sum?=?0;

long?file1len?=?file1.length();

while?(-1?!=?len)

{

bos.write(be,?0,?len);?//?一次讀一個字節(jié)數(shù)組?換行也會讀?不用自動換行了

bos.flush();

sum?+=?len;

jd?=?(int)(sum?*?1.0?/?file1len?*?100);?//?之前沒有乘1.0?且多寫了一個(int)?導致jd一直是0?最后一次突變100

len?=?bis.read(be);

}

最后再繪一次

Dimension?d?=?progressBar.getSize();

Rectangle?rect?=?new?Rectangle(0,?0,?d.width,?d.height);

progressBar.setValue(jd);

progressBar.paintImmediately(rect);

b?=?false;

System.out.println("b="?+?b);

}

catch?(IOException?e1)

{

e1.printStackTrace();

}

}

});

Thread?t?=?new?Thread(this);

t.start();

pack();

setLocationRelativeTo(null);

setVisible(true);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

public?static?void?main(String[]?args)

{

Exp10_3?t?=?new?Exp10_3();

t.initUI();

}

@Override

public?void?run()

{

while?(true)

{

if?(b)

{

//progressBar.setValue(jd);//之前run內(nèi)就這一行,進度條一直不刷新

Dimension?d?=?progressBar.getSize();

Rectangle?rect?=?new?Rectangle(0,?0,?d.width,?d.height);

progressBar.setValue(jd);

progressBar.paintImmediately(rect);

if?(jd?==?100)

{

b?=?false;

//System.out.println("run內(nèi)b="?+?b);//?不能寫return?此進程不能結(jié)束?一直開著

}

}

//System.out.println("我沒有結(jié)束");//刪了此行進度條就又不刷新了

//第一次改進??上面一行換成下面5行??即輸出操作改成停頓1ms

try

{

Thread.sleep(1);

}

catch?(InterruptedException?e)

{

e.printStackTrace();

}

}

}

}

以上就是本篇文章的所有內(nèi)容,對于一些java常見問題及解決方法還有不懂的話就來我們網(wǎng)站看看吧。

推薦閱讀:

總結(jié)

以上是生活随笔為你收集整理的java 进度条 不更新_java进度条不动怎么解决?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 精品国产99一区二区乱码综合 | 黄色国产网站 | 欧美国产日本 | 青草视频免费看 | 波多野结衣电车 | 国产亚洲第一页 | 久久午夜夜伦鲁鲁一区二区 | 国产成人精品a视频一区 | 国产91熟女高潮一区二区 | 国产激情在线 | 国产免费叼嘿网站免费 | 国产猛男猛女超爽免费视频 | 精品少妇一区二区三区密爱 | 蜜臀av一区二区 | 国产一区二区三区高清视频 | 日本一本在线观看 | 女生毛片| 午夜67194| 国产在线一区二 | 天天干天天天天 | 天堂久久久久 | 国产拍拍视频 | 欧美少妇bbw | 91成人在线观看喷潮 | 国产精品羞羞答答 | 久久在线精品 | 人妻互换一二三区激情视频 | 男人天堂99| 寡妇av| 精品三级 | 成人在线视频网站 | 国产色中色 | 欧美日韩小视频 | 精品久久成人 | 6080久久 | 亚洲美女自拍视频 | 色爱AV综合网国产精品 | 色老头av | 狠狠做深爱婷婷综合一区 | 超碰极品| 色婷婷av一区二区三区之e本道 | 精品一区二区三区视频在线观看 | 99精品视频在线播放免费 | 成人精品亚洲人成在线 | 97成人超碰| 亚洲免费a | 国产伦精品一区二区三区妓女 | 日韩黄色大全 | 15—16女人毛片 | 国产精品一二 | 99久久精品免费看国产免费软件 | 99在线无码精品入口 | 中文字幕色站 | 五月天综合社区 | 成人欧美一区二区三区黑人一 | 国产一区二区视频免费在线观看 | 国产有码在线观看 | 久操av| 看片一区二区 | 日韩精品人妻中文字幕有码 | 免费观看a毛片 | 午夜精品久久久内射近拍高清 | av三级 | 日韩免费av片 | 国产精品一二区在线观看 | 国产毛片一区二区三区va在线 | 丝袜美腿亚洲一区二区图片 | 殴美性生活| 天天看视频 | 骚婷婷 | 成 人 黄 色 片 在线播放 | 久久精品免费电影 | 亚洲欧美日韩一区在线观看 | 淫视频在线观看 | 在线观看精品视频 | 免费黄色在线网址 | 欧美成人高潮一二区在线看 | 亚洲视频精品一区 | 成人黄色小说在线观看 | 国产精品尤物 | 亚洲黄v | a v视频在线观看 | 日韩黄色一级大片 | 中文字幕在线观看不卡 | a级无遮挡超级高清-在线观看 | 黄色三级视频在线观看 | 欧美日韩少妇精品 | 偷拍视频一区 | 久久精品国产网红主播 | 国产精品熟女久久久久久 | 国产精品va无码一区二区三区 | 一本一道波多野结衣一区二区 | 99re国产精品 | 聚色av| 日韩av免费网站 | jizzjizz美国 | 日本少妇吞精囗交 | 国产黄在线观看 | 久久亚洲精品国产精品黑人v |