求助,java jprogressbarr根据程序进展程度刷新的用法

JprogressBar的用法举例_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
JprogressBar的用法举例
上传于||文档简介
&&J​a​v​a​ ​中​进​度​条​J​p​r​o​g​r​e​s​s​B​a​r​ ​的​用​法
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
你可能喜欢求助!JProgressBar根据程序进展程度刷新的用法_java吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:559,743贴子:
求助!JProgressBar根据程序进展程度刷新的用法收藏
百度了很多范例基本都是用timer定时器做的例子,那个太不实际了比如,我想通过程序下载一个文件,或者读写一个文件,那么我想把这个过程的进展程度通过进度条展示给用户,该怎么写呢,求高手给一段范例代码
千锋java,Java+大数据全项目实训,两周免费试听,0基础小班授课!千锋java零学费学习,Java+大数据培训,先入学后付款
正好有个类似的例子:public class FileTree extends JFrame {
JDialog dialog = new JDialog();
JPanel panel = new JPanel();
JLabel field = new JLabel();
JProgressBar progressBar = new JProgressBar();
JButton btn = new JButton();
SwingWorker&Object, String&
DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode("我的电脑");
public FileTree() {
panel.setLayout(new BorderLayout());
panel.add(field, BorderLayout.CENTER);
panel.add(progressBar, BorderLayout.SOUTH);
progressBar.setStringPainted(true);
panel.setBorder(BorderFactory.createLineBorder(Color.black));
dialog.setContentPane(panel);
dialog.setUndecorated(true);
dialog.setSize(500, 50);
dialog.setLocationRelativeTo(null);
dialog.setAlwaysOnTop(true);
dialog.setVisible(true);
getWorker().execute();
public SwingWorker&Object, String& getWorker() {
if (worker == null) {
worker = new SwingWorker&Object, String&() {
protected Object doInBackground() throws Exception {
File[] roots = File.listRoots();
for (File file : roots) {
getFiles(file, rootNode, true);
protected void done() {
dialog.setVisible(false);
JTree tree = new JTree(rootNode, true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setContentPane(new JScrollPane(tree));
setSize(400, 300);
setLocationRelativeTo(null);
setVisible(true);
private void getFiles(File file, DefaultMutableTreeNode node,
boolean root) {
publish(file.getAbsolutePath());
if (root) {
name = file.getAbsolutePath();
name = file.getName();
DefaultMutableTreeNode newNode = new DefaultMutableTreeNode(
if (file.isDirectory()) {
File[] files = file.listFiles();
if (files != null) {
for (int i = 0; i & files. i++) {
setProgress(i * 100 / files.length);
getFiles(files[i], newNode, false);
node.add(newNode);
protected void process(List&String& chunks) {
for (String string : chunks) {
field.setText(string);
worker.addPropertyChangeListener(new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
if ("progress".equals(evt.getPropertyName())) {
Integer integer = (Integer) evt.getNewValue();
progressBar.setValue(integer);
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new FileTree();
我研究下,先行谢过
建议不要把你读文件的代码与具体的JProgressBar的操作紧密耦合。可以定义一个策略接口(Strategy Interface),或者你叫它回调(callback)也行名字不重要:public interface ProgressMonitor{
public void progressUpdated(long current, long total);}你读文件的代码可以跟这个接口耦合:public void readFile(File file, ProgressMonitor monitor);然后你可以在外面做个适配器,来刷新JProgressBar:public class ProgressMonitorAdapter implements ProgressMonitor {
private JProgressB
public ProgressMonitorAdapter(JProgressBar bar) { ... }
public void progressUpdated(long current, long total) {
好高端的代码。。。看不懂~~
一个更好的方桉是你的适配器本身还 implements javax.swing.BoundedRangeModel :public class ProgressMonitorAdapter implements ProgressMonitor, BoundedRangeModel { ...}
可能没有很系统的学过JSE,我是J2EE出生的,最近没事干慢慢摸索SE,你和我说的适配器 接口这些是做什么用的,为什么要这样的结构等等我都不懂~~~
我目前的学习方式基本就是看范例代码,能看得懂就依葫芦画瓢了~~~
你这些东东又是在什么书上看到的
举例来说吧今天你用JProgressBar显示进度,做好了明天你不想用了,想用JLabel的文字显示百分比,怎么办呢,改你那段读文件的代码贝,把所有调用JProgressBar刷新的地方改成 JLabel 的 setText() ... ...好,你改完了没问题了,后天你发现用一个圆饼("progress pie")显示进度比较酷,...有什么说的呢,改你那段读文件的代码贝你那个读文件的方法就很郁闷心想你要改的是界面的显示方式,老回来改我干吗呀我只想好好读文件呀
忘了也许是看别人代码学到的吧 ...忽然有那么一天发现接口很好用
上海java培训一般需要4-8周,就可完全掌握,名企就业.0元试学.java培训的费用一般根据培训的课时决定,可申请0元试学.点击咨询..
后来也看过一些网上的文章和书学到一些听上去比较吓人的名字... ...最推荐你看的是&Effective Java&第二版,它不是讲设计模式的也不是系统的讲面象对象的理论的,它只是把Java里的N条最佳实践方式告诉你,并告诉你为什么。
恩 不错,有前途设计的不错,比我们公司做结构设计的强多了……
恩,好,看完 F.R.C. 那本书后就看看这个现在终于看到第4章了……
你看得比我快多了
以前都没有系统的看过书我的 java 以前就只看过 API 和源码,一切都是自己摸索……现在看看这些书,发现果然很有收获
F.R.C 是以 java 6 为基础写的在看那些例子的时候发现 java 7 在某些方面,又有了一些优化不过它说的整体思路和方向都是没有问题的
我觉得有些书是这样的有大量的编程实践再来看书和直接就看书那效果是天差地别的
addPropertyChangeListener这个东西现在还不会用,求详解。表面看上去貌似是 属性改变监听器,那么监听的是什么属性呢?顺便给出我的程序代码,帮忙看下要设计进度条该怎么写,试着写到一半开始迷茫了。先是下载,然后在done里面读取并刷新table。下载的那个环节就1句,没有循环就没有进度,那这个该怎么办呢new SwingWorker&Void, String&(){
public void saveToFile(URL url) {
FileOutputStream fos =
BufferedInputStream bis =
HttpURLConnection httpUrl =
byte[] buf = new byte[1024];
int size = 0;
httpUrl = (HttpURLConnection) url.openConnection();
httpUrl.connect();
bis = new BufferedInputStream(httpUrl.getInputStream());
fos = new FileOutputStream("C:\\Program Files\\temp.pbk");
while ((size = bis.read(buf)) != -1) {
fos.write(buf, 0, size);
publish("1");
fos.flush();
} catch (IOException e) {
} catch (ClassCastException e) {
} finally {
fos.close();
bis.close();
httpUrl.disconnect();
} catch (IOException e) {
} catch (NullPointerException e) {
protected void process(List&String& chunks) {
for(String s:chunks){
int ad=Integer.parseInt(s);
jProgressBar.setValue(jProgressBar.getValue()+ad);
protected Void doInBackground() throws Exception {
saveToFile(new URL(""));
} catch (MalformedURLException e) {
protected void done() {
ArrayList&String& re=((vpnTable)jTable).init();
for(int i=0;i&re.size();i++){
((vpnTable)jTable).addRow(re.get(i), "200MS","0%");
}.execute();
addPropertyChangeListener 在我那个例子中,只是为了对 setProgress 那个方法进行监听因为 setProgress 时,会 firePropertyChange("progress",……);这个方法会最终触发 PropertyChangeListener 中的 propertyChange 方法而这一切是在 EDT 中进行的,所以这种对界面更新的方式是安全的而你说无法监视下载的进度,如果真的没有办法得知下载的进度,那确实无法正确的展示进度条只能模拟个虚假进度出来了……
原来swingworker里还内置了一个 setprogres方法,刚发现那么addPropertyChangeListener 能监听的属性一共有哪些呢?除了 progres是一个内置属性外,还有哪些内置属性呢, JDK的API文档里头都没说
好像还有个其他什么已经用到的属性,忘了……其实这些属性,你可以自己随便写比如你在 SwingWorker 里写个方法:
public void setOOXX(String text) {
firePropertyChange("ooxx", null, text);
}然后你就可以在 addPropertyChangeListener 时监听"ooxx" 属性
原来是这么玩的,有机会一定要用一下
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或下次自动登录
现在的位置:
& 综合 & 正文
JProgressBar 进度条使用问题
1.设置JProgressBar 大小
一开始的时候,我使用.setSize()方法进行设置大小,发现设置后改不了,改使用
bar.setPreferredSize(new Dimension(25,50));后就可以
package swing.
import java.awt.BorderL
import java.awt.D
import java.awt.FlowL
import javax.swing.JF
import javax.swing.JP
import javax.swing.JProgressB
import javax.swing.SwingC
import javax.swing.SwingU
public class testJprogressBar extends JFrame
JProgressB
private testJprogressBar()
bar = new JProgressBar(SwingConstants.VERTICAL);// 设置垂直方向
// bar.setSize(30, 30);// 不能修改大小
bar.setMaximum(100);// 设置最大值
bar.setMinimum(0);// 设置最小值
bar.setValue(20);// 设置进度条当前值
this.setSize(200, 200);
panel = new JPanel();
panel.setLayout(new FlowLayout());
bar.setPreferredSize(new Dimension(30, 50));
panel.add(bar);
this.add(panel, BorderLayout.CENTER);
this.setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
public static void main(String[] args)
SwingUtilities.invokeLater(new Runnable()
public void run()
new testJprogressBar();
&&&&推荐文章:
【上篇】【下篇】Java进度条JProgressBar使用方法
Java进度条JProgressBar使用方法
Java进度条JProgressBar使用方法import java.awt.BorderLimport java.awt.Cimport java.awt.Cimport java.awt.Dimport java.awt.event.ActionEimport java.awt.event.ActionLimport javax.swing.JBimport javax.swing.JFimport javax.swing.JLimport javax.swing.JPimport javax.swing.JProgressBimport javax.swing.Timport javax.swing.event.ChangeEimport javax.swing.event.ChangeLpublic class ProgressBar implements ActionListener,ChangeListener {JFrame frame=JProgressBJLTJBpublic ProgressBar(){&& frame=new JFrame("安装");&& frame.setBounds(100, 100, 400, 130);&& frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&& Container contentPanel=frame.getContentPane();&& label=new JLabel("",JLabel.CENTER);&& progressbar = new JProgressBar();&& progressbar.setOrientation(JProgressBar.HORIZONTAL);&& progressbar.setMinimum(0);&& progressbar.setMaximum(100);&& progressbar.setValue(0);&& progressbar.setStringPainted(true);&& progressbar.addChangeListener(this);&& progressbar.setPreferredSize(new Dimension(300,20));&& progressbar.setBorderPainted(true);&& progressbar.setBackground(Color.pink);&&&& JPanel panel=new JPanel();&& b=new JButton("安装");&& b.setForeground(Color.blue);&& b.addActionListener(this);&& panel.add(b);&& timer=new Timer(100,this);&& contentPanel.add(panel,BorderLayout.NORTH);&& contentPanel.add(progressbar,BorderLayout.CENTER);&& contentPanel.add(label,BorderLayout.SOUTH);&& //frame.pack();&& frame.setVisible(true);&&&&}public void actionPerformed(ActionEvent e) {&& if(e.getSource()==b){&&& timer.start();&& }&&&& if(e.getSource()==timer){&&&& int value=progressbar.getValue();&&&& if(value&100)&&&&&&& progressbar.setValue(++value);&&&& else{&&&&&&& timer.stop();&&&&&&& frame.dispose();&&&& }&&&& }&&}public void stateChanged(ChangeEvent e1) {&& int value=progressbar.getValue();&& if(e1.getSource()==progressbar){&&& label.setText("目前已完成进度:"+Integer.toString(value)+"%");&&& label.setForeground(Color.blue);&& }&&}public static void main(String[] args) {&& ProgressBar app=new ProgressBar();}}
感谢关注 Ithao123Java频道,是专门为互联网人打造的学习交流平台,全面满足互联网人工作与学习需求,更多互联网资讯尽在 IThao123!
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。
用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。
Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。
Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。
产品设计是互联网产品经理的核心能力,一个好的产品经理一定在产品设计方面有扎实的功底,本专题将从互联网产品设计的几个方面谈谈产品设计
随着国内互联网的发展,产品经理岗位需求大幅增加,在国内,从事产品工作的大部分岗位为产品经理,其实现实中,很多从事产品工作的岗位是不能称为产品经理,主要原因是对产品经理的职责不明确,那产品经理的职责有哪些,本专题将详细介绍产品经理的主要职责
PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。
IThao123周刊}

我要回帖

更多关于 jprogressbar动态显示 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信