Java 数据库进度条_java进度条

练习JProgressBar结合Timer使用。

代码如下:

package luojing;

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import java.util.Timer;

import java.util.TimerTask;

public class NewClass

{

static JProgressBar jpb = null;

static JButton jb = null;

public static void main(String args[])

{

JFrame frm = new JFrame();

Container contentPane = frm.getContentPane();

jpb = new JProgressBar();

jpb.setOrientation(JProgressBar.HORIZONTAL);

jpb.setMaximum(100);

jpb.setMinimum(0);

jpb.setValue(0);

jpb.setStringPainted(true);

jpb.setPreferredSize(new Dimension(400, 50));

contentPane.add(jpb, BorderLayout.CENTER);

jb = new JButton("开始");

jb.addActionListener(new Change());

contentPane.add(jb, BorderLayout.SOUTH);

frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frm.pack();

frm.setTitle("进度条");

// 窗口居中

frm.setLocation((Toolkit.getDefaultToolkit().getScreenSize().width - frm.getSize()

.width) / 2,(Toolkit.getDefaultToolkit().getScreenSize().height - frm.getSize().height) / 2);

frm.setVisible(true);

}

static class Change implements ActionListener

{

public void actionPerformed(ActionEvent e)

{

Timer timer = new Timer();

timer.schedule(new mytask(jpb), 100, 100);

jb.setEnabled(false);

// 下面这种方法达不到预定效果,因为线程sleep()时用户界面也不会响应,只会在actionPerformde()执行结束后才会响应

/*

* for (int i = 0; i <= 100; i++) { try { Thread.sleep(100);

*

* jpb.setValue(i);

*

* } catch (InterruptedException e1) { e1.printStackTrace(); }

*

* }

*/

// 采用新建一个一个线程来执行累加可以达到预定的效果

/*

* new Thread(new Runnable() { public void run() { for (int i = 1; i

* <=100; i++) { try { Thread.sleep(100); jpb.setValue(i); } catch

* (InterruptedException ie) { } } } }).start();

*/

}

}

}

class mytask extends TimerTask

{

JProgressBar jpb = null;

int i = 1;

public mytask(JProgressBar jp)

{

this.jpb = jp;

}

public void run()

{

this.jpb.setValue(i++);

}

}

另附(转):

为什么进度条在事件处理过程中不更新,而是在完成后,从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方法,以便在事件调度线程中执行该调用程序。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/506116.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

暗金色 rgb_杜伽TAURUS K310樱桃RGB红轴体验:做工精良、手感优秀

前言DURGOD杜伽的机械键盘一直以简约的外形和优秀的手感而备受好评。笔者之前用过杜伽的K310、K320两个系列的多把键盘&#xff0c;对其非常熟悉&#xff0c;外形简约大方&#xff0c;手感、灯效也比较满意。正因如此&#xff0c;这次刚刚入手了一把杜伽K310 RGB樱桃红轴&#…

vim 显示行号_Vim给文件加行号,这通惊为天人的操作没sei了!文末天书慎点

引言一般 Vim 使用 :set number 命令&#xff0c;在编辑器显示行号。本文展示了如何将行号插入到正文中&#xff0c;或者只插入到段落中。此外&#xff0c;还提供了打印行号的选项(Vim 可以打印带有数字的行&#xff0c;并且不需要文件有数字)。Vim可以使用 :s 命令在每行之前插…

java 获取对象方法有哪些方法有哪些方法有哪些_Java中创建String 对象的方法有哪些...

Java中创建String 对象的方法有哪些发布时间&#xff1a;2020-11-25 16:45:30来源&#xff1a;亿速云阅读&#xff1a;71作者&#xff1a;Leah这篇文章将为大家详细讲解有关Java中创建String 对象的方法有哪些&#xff0c;文章内容质量较高&#xff0c;因此小编分享给大家做个参…

bvp解算器是什么_对数小史,以及为什么ln x的导数是1/x

为什么 lnx 求导是 1/x&#xff1f;​www.zhihu.com现代的数学体系——包括一般的高中和大学教学&#xff0c;一般都将“对数函数”定义为“指数函数”的反函数。不过&#xff0c;鲜为人知的是&#xff0c;在数学史上&#xff0c;“对数”这个概念反而比“指数”出现的更早&…

supermap iserver java 6r许可_SuperMap iserver Java 6R 在 linux 上安装和配置 | 学步园

一.安装JDK1.进入到放置JDK目录下输入命令&#xff1a;./jdk-6u14-linux-i586.bin 开始安装jdk &#xff0c;安装的时候会让你输入yes(如果提示你权限不够的话 可以输入命令&#xff1a;chmod 755 jdk-6u14-linux-i586.bin 改变权限)2.配置java运行环境 这里我采用的是编写一个…

vb中怎么使图片适应框的大小_叮!VB考前练习了解一下?

1、Visual Basic窗体设计器的主要功能是(C )。A) 画图B) 编写源程序代码C) 建立用户界面D) 显示文字解析&#xff1a;Visual Basic窗体设计器简称窗体(Form)&#xff0c;是应用程序最终面向用户的窗口&#xff0c;它对应于应用程序的运行结果。各种图形、图像、数据等都是…

苹果切换输入法_日语输入法哪个好

在初学日语的时候经常会遇到一些不认识的词&#xff0c;想查一下这个词是什么意思&#xff0c;应该怎么输入呢?尝试过许多软件之后&#xff0c;テツ为大家总结了一些认为比较好用的输入法百度IME输入法。下载安装后的切换非常简单&#xff0c;在右下角输入法处切换至JP日语即可…

开源社交系统java_JAVA 开源 SNS 社交系统 JEESNS V0.8 发布

JAVA 开源 SNS 社交系统 JEESNS V0.8 发布2017.02.17 JEESNS V0.8升级说明后台界面全新升级后台增加微博搜索功能增加了会员操作日志、会员动态微博、微博评论增加会员功能群组帖子增加置顶、精华功能限制微博输入内如字数、输入内容时字数统计微博增加Emoji表情增加微博、文章…

python 10个100以内随机整数编辑_你要偷偷的学Python,然后惊呆所有人(第五天) - python阿喵

标题无意冒犯&#xff0c;就是觉得这个广告挺好玩的前言前期回顾&#xff1a;你要偷偷学Python&#xff0c;然后惊呆所有人(第四天)在第四天的时候&#xff0c;我们接触了Python的模块调用&#xff0c;这也是Python能够火起来的一大优势。我们还实践了csv模块。不过冷静下来想想…

广义线性模型_广义线性模型(第六章补充)

上一篇文章&#xff08;第六章&#xff09;主要介绍了最大熵模型&#xff0c;并从中推导出逻辑斯谛回归&#xff0c;感觉意犹未尽。在复习了CS229 Lecture note之后&#xff0c;我决定重新整理思路&#xff1a;从广义线性模型的角度来看逻辑斯谛回归。最后&#xff0c;基于样本…

安卓开发怎么调用photopicker_谷歌出手整顿安卓应用程序乱象:无良权限的APP们再见了!...

相信你在使用安卓手机的时候一定有过这样的经历&#xff0c;在明确拒绝了软件调用电话、手机通讯录、短信等敏感内容的访问权后&#xff0c;APP表示无法继续运行然后强退。如果这款APP不具备可替代性&#xff0c;恐怕最终结果是&#xff0c;用户不得不选择妥协。关于应用程序度…

react router官方文档_阿里开源可插拔 React 跨端框架 UmiJS

点击上方“开发者技术前线”&#xff0c;选择“星标”18&#xff1a;30 在看 真爱作者&#xff1a;Tamic | 编辑&#xff1a; 可可阿里之前开源&#xff1a;阿里闲鱼开源 Flutter 应用框架 Fish Redux&#xff01; 今天介绍的是前端React 框架- UmiJS。介绍umi官方宣称是一个…

java约瑟夫环迭代器_Josephus约瑟夫环问题的不同实现方法与总结

/************************************************************************//* Josephus问题——数组实现 *//************************************************************************/#include #include int Josephus(int t…

ios 下拉放大 上拉缩小_为啥鞠婧祎发量这么多?截图放大十倍她的“发缝”,网友:真密集...

​鞠婧祎&#xff0c;这位女明星真的是黑&#xff0c;红&#xff0c;黑&#xff0c;红。这不是秘密。鞠婧祎最近几天的确很受欢迎。甚至头发也受到质疑。一般而言&#xff0c;娱乐业的演艺人员由于多年来的工作时间安排不规则以及采取巴拉克拉法帽的行为&#xff0c;通常都有使…

python背景图片加载代码_2019.12.05-背景图片设置代码

css背景.box{width: 320px;height: 160px;border:5px solid #000;margin-bottom: 50px;background-color: gold;background-image: url(images/new.png);font-size: 40px;color: red;}.box2{width: 320px;height: 160px;border:5px solid #000;margin-bottom: 50px;background-…

苹果无线耳机使用方法_苹果官方:如果 AirPods Pro 出现这些问题,我们将免费更换!...

今年的 iPhone 12 系列并没有像往常一样附赠充电器、耳机&#xff0c;而受到同样待遇的还有 iPhone 11 系列&#xff0c;现在的 iPhone 11 系列不仅包装与 iPhone 12 系列一样变小了&#xff0c;而且同样也不再附赠充电器和耳机&#xff0c;但 iPhone 11 系列价格更低了。根据数…

opencv4.5.0安装包_UG NX12.0 软件介绍(附安装包)

【软件名称】 UG NX12.0【文件大小】 5.67GB 【语言支持】 简体中文【系统类型】 64位【兼容系统】 Win7 / Win8 / Win10【下载链接】 文末扩展链接获取软件简介&#xff1a;西门子公司推出了最新版的Siemens NX 12.0版本(UG12.0)&#xff0c;该软件提供了当今市场上唯一可扩展…

java国际化bundle_Java国际化(i18n)ResourceBundle类

ResourceBundle类用于存储区域设置敏感的文本和对象。 通常使用属性文件来存储特定于语言环境的文本&#xff0c;然后使用ResourceBundle对象来表示它们。 以下是在基于Java的应用程序中使用特定于语言环境的属性文件的步骤。第1步:创建属性文件假设我们需要英文语言环境的属性…

win7备份工具_win7系统小白一键系统详细教程

很多朋友给小白留言说&#xff0c;使用了新版小白的一键备份后&#xff0c;不知道如何还原系统。体验过新版的朋友们最大的感受就是这个工具越来越小了。接下来&#xff0c;win7系统的一键还原将为您带来一个详细的教程。在系统一键备份方面&#xff0c;如何减少系统一键还原&a…

python selenium iframe怎么定位_python+selenium 切换iframe

转载自http://www.cnblogs.com/yoyoketang/p/6128619.html前言有很多小伙伴在拿163作为登录案例的时候&#xff0c;发现不管怎么定位都无法定位到&#xff0c;到底是什么鬼呢&#xff0c;本篇详细介绍iframe相关的切换以http://mail.163.com/登录页面10为案例&#xff0c;详细介…