练习JProgressBar结合Timer使用。
代码如下:
另附(转):
为什么进度条在事件处理过程中不更新,而是在完成后,从0%调到100%?
分两种情况:
1)在AWT事件线程中执行的操作
当 应用程序在事件线程中执行长时间的操作时,会阻塞正常的AWT事件处理,因此阻止了重绘操作的发生。这同常会在下列情况下发生:应用程序响应一个来自用户 界面的请求时,在连接到一个按钮或其他GUI组件的事件处理程序中执行任务,任务的内容可能会需要较长时间,使事件线程挂起,直至远程系统发出答复为止。 当应用程序调用JProgressBar的setValue方法时,进度条可能更新期内部状态并调用repaint,这样做会把一个事件放置到AWT事件 队列中。不幸的是,直至应用程序的事件处理程序完成其处理并把控制权返回到线程的事件处理循环,才能处理该事件。
可以通过调用JComponent的paintImmediately方法来这样做,该方法有两种形式:
public void paintImmediately(int x, int y, int width, int height);
public void paintImmediately(Rectangel rect);
例如:
Dimension d = bar.getSize();
Rectangel rect = new Rectangle(0,0, d.width, d.height);
...
bar.setValue(progressValue);
bar.paintImmediately(rect);
...
2)在另一个线程中执行的操作
如 果在一个单独的线程中执行该操作,当调用进度条的setValue方法,它的更新不会出现任何问题,问题在于,后台线程必须调用JProgressBar 的setValue。而Swing组件只有在事件线程中才能安全的访问。因此,从执行实际工作的线程调用setValue方法是不安全的!解决的方法是使 用SwingUtilites的invokeLater方法,让AWT事件线程稍后进行setValue调用。
例如:
...
SwingUtilities.invokeLater(new Runnable() {
public void run() {
bar.setValue(value);
}
});
...
还有一种可能,不能再线程中改变swing组件,例如,不能从线程调用label.setText,但是可以使用EventQueue类的invokeLater和invokeAndWait方法,以便在事件调度线程中执行该调用程序。
分享到:
相关推荐
java进度条设计源代码 有多个进度条代码
java 进度条的实现java 进度条的实现java 进度条的实现java 进度条的实现java 进度条的实现java 进度条的实现java 进度条的实现java 进度条的实现java 进度条的实现
请用NETBEANS运行脚本,读取的文件最好大于30M,请在代码中更换名称,并且把这个文件放入解压的文件夹中。
进度条 3种排序功能选择 可以输入数据或产生随机数
Java实现进度条 Java实现进度条 Java实现进度条 Java实现进度条 Java实现进度条
java进度条的使用视频
java 进度条
Java 进度条的使用 有暂停 和 继续,不是简单的开始而已,这里还实现了暂停和继续的功能,希望你们好好利用,掌握它的使用!
Java进度条的使用视频教程,很不错的东西。希望对你的学习能有帮助。
使用JProgressBar和SwingWorker做的Java进度条 简单方便 效果看这里:http://blog.csdn.net/kakashi8841/archive/2011/05/03/6388797.aspx
用java实现了简单的进度条显示,只有开始,无法暂停和继续,适用于再次开发。
通过读取文件来演示JProgressBar的功能!
Java 进度条程序代码,包含简单程序实践
该示例程序通过iobjects JAVA实现导入数据的进度条的功能。
进度条的设计,掌握颜色选择器对话框的使用,文件选择器对话框的使用,使用JOptionPane类创建对话框,通过制作“设置字体”对话框,掌握列表框、单选按钮、组合框等组件的使用,了解打包工具JAR的使用
Java的命令行进度条 JCmdLineProgess
gif形式的进度条,多种多样的. gif形式的进度条,多种多样的.
java实现监视任务的进度条,本人已试验成功,分享给有需要的朋友们啦!
弹出进度条,好看实用的进度条,js做出来的,可以直接运行