- 浏览: 3432238 次
- 性别:
- 来自: 珠海
文章分类
- 全部博客 (1633)
- Java (250)
- Android&HTML5 (111)
- Struts (10)
- Spring (236)
- Hibernate&MyBatis (115)
- SSH (49)
- jQuery插件收集 (55)
- Javascript (145)
- PHP (77)
- REST&WebService (18)
- BIRT (27)
- .NET (7)
- Database (105)
- 设计模式 (16)
- 自动化和测试 (19)
- Maven&Ant (43)
- 工作流 (36)
- 开源应用 (156)
- 其他 (16)
- 前台&美工 (119)
- 工作积累 (0)
- OS&Docker (83)
- Python&爬虫 (28)
- 工具软件 (157)
- 问题收集 (61)
- OFbiz (6)
- noSQL (12)
最新评论
-
HEZR曾嶸:
你好博主,这个不是很理解,能解释一下嘛//左边+1,上边+1, ...
java 两字符串相似度计算算法 -
天使建站:
写得不错,可以看这里,和这里的这篇文章一起看,有 ...
jquery 遍历对象、数组、集合 -
xue88ming:
很有用,谢谢
@PathVariable映射出现错误: Name for argument type -
jnjeC:
厉害,困扰了我很久
MyBatis排序时使用order by 动态参数时需要注意,用$而不是# -
TopLongMan:
非常好,很实用啊。。
PostgreSQL递归查询实现树状结构查询
http://www.cnblogs.com/leajon-first/archive/2012/10/26/2740633.html
涉及三个线程:
主线程:主线程运行程序,
任务线程:然后打开一个新线程来处理任务,
刷新线程:在处理任务的时候,需要刷新主线程里面的信息,
那么应该重新开第三个线程来刷新主线程的信息。
多个线程,比如一个线程做业务,一个线程专门处理进度条
涉及三个线程:
主线程:主线程运行程序,
任务线程:然后打开一个新线程来处理任务,
刷新线程:在处理任务的时候,需要刷新主线程里面的信息,
那么应该重新开第三个线程来刷新主线程的信息。
import java.awt.BorderLayout; import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JProgressBar; import javax.swing.SwingUtilities; public class PgbDemo extends JFrame { private JProgressBar pgb; private JButton but; private JPanel pan; public PgbDemo() { super("JProgressBar Demo"); initComponents(); } private void initComponents() { pan = new JPanel(); pan.setLayout(new BorderLayout()); pgb = new JProgressBar(); pgb.setMinimum(0); pgb.setMaximum(100); pgb.setValue(0); pgb.setStringPainted(true); pgb.setBorderPainted(true); pgb.setBackground(Color.yellow); pan.add(pgb, BorderLayout.CENTER); but = new JButton("Start"); but.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { //run task but.setEnabled(false); new ATask().start(); } }); pan.add(but, BorderLayout.EAST); this.getContentPane().add(pan); this.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { PgbDemo frame = new PgbDemo(); frame.setLocationRelativeTo(null); frame.setSize(500, 100); frame.setVisible(true); } }); } class ATask extends Thread { public void run() { System.out.println(SwingUtilities.isEventDispatchThread()); for (int i = 0; i < 130; i++) { final int percents = (int) ((float) i / 130.0 * 100.0) + 1; SwingUtilities.invokeLater(new Runnable() { public void run() { PgbDemo.this.pgb.setValue(percents); } }); try { Thread.sleep(100); } catch (InterruptedException ex) { Logger.getLogger(PgbDemo.class.getName()).log(Level.SEVERE, null, ex); } } SwingUtilities.invokeLater(new Runnable() { public void run() { PgbDemo.this.but.setEnabled(true); } }); } } }
多个线程,比如一个线程做业务,一个线程专门处理进度条
package tools; import java.awt.BorderLayout; import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JProgressBar; import javax.swing.SwingUtilities; /** * 涉及到四个个线程 * 1.主线程 * 2.进度条线程 * 3.做业务的线程 * 4.改变进度条值的线程(不断创建,消失) * @author Administrator * */ public class PgbDemo extends JFrame { /** * */ private static final long serialVersionUID = 1L; private JProgressBar pgb; private JButton but; private JPanel pan; private int max = 100; private int current = 0; public PgbDemo() { super("JProgressBar Demo"); initComponents(); } private void initComponents() { pan = new JPanel(); pan.setLayout(new BorderLayout()); pgb = new JProgressBar(); pgb.setMinimum(0); pgb.setMaximum(100); pgb.setValue(0); pgb.setStringPainted(true); pgb.setBorderPainted(true); pgb.setBackground(Color.yellow); pan.add(pgb, BorderLayout.CENTER); but = new JButton("Start"); but.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // run task but.setEnabled(false); new ATask().start(); new ATask1().start(); System.out.println("AAAAAAA"); } }); pan.add(but, BorderLayout.EAST); this.getContentPane().add(pan); this.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { PgbDemo frame = new PgbDemo(); frame.setLocationRelativeTo(null); frame.setSize(500, 100); frame.setVisible(true); } }); } class ATask1 extends Thread { public void run() { System.out.println(SwingUtilities.isEventDispatchThread()); while (current <= max) { System.out.println(current); try { Thread.sleep(30); } catch (InterruptedException ex) { Logger.getLogger(PgbDemo.class.getName()).log(Level.SEVERE, null, ex); } //同步操作 synchronized(this){ current++; } } SwingUtilities.invokeLater(new Runnable() { public void run() { PgbDemo.this.but.setEnabled(true); } }); } } class ATask extends Thread { public void run() { System.out.println(SwingUtilities.isEventDispatchThread()); int currPercents = 0;//用来跳出判断 while(currPercents<=100){ System.out.println("----------------current=>" + current); System.out.println("----------------max=>" + max); final int percents = (int) ((float) current / max * 100.0) + 1; currPercents= percents; System.out.println("----------------percents=>" + percents); SwingUtilities.invokeLater(new Runnable() { //设定进度条的值,是需要在一个线程里面的 public void run() { PgbDemo.this.pgb.setValue(percents); } }); try { Thread.sleep(50); } catch (InterruptedException ex) { Logger.getLogger(PgbDemo.class.getName()).log(Level.SEVERE, null, ex); } } SwingUtilities.invokeLater(new Runnable() { public void run() { PgbDemo.this.but.setEnabled(true); } }); } } }
发表评论
-
Java Comparable和Comparator
2016-06-26 08:52 706http://my.oschina.net/android52 ... -
Java集合框架之fastutil & koloboke
2016-06-23 14:04 2480Java集合框架之fastutil http://rensan ... -
ehcache 分布式支持
2016-06-05 22:26 1104原文 http://my.oschina.net/glenxu ... -
Intellij IDEA插件开发入门
2016-05-26 11:42 2890原文: http://blog.csdn.net/dc_726 ... -
阿里巴巴Druid数据源的配置与使用
2016-05-24 17:42 1551http://my.oschina.net/wjme/blog ... -
mysql中间件研究(Atlas,cobar,TDDL), 分库分表插件
2016-05-09 14:15 3458http://www.guokr.com/blog/47576 ... -
Java集合: Queue和Deque
2016-05-09 09:49 1869Queue http://my.oschina.net/kev ... -
使用gzip优化web应用(filter实现)
2016-05-07 01:45 1035使用gzip优化web应用(filter实现) http:// ... -
Byteman 3.0.5 发布,Java 字节码注入工具
2016-04-23 10:29 1775Byteman 3.0.5 发布,Java 字 ... -
RandomStringUtils的说明和生成随机汉字
2016-04-20 15:21 1406更多参考: http://my.oschina.net/wil ... -
通过IP地址获取地理位置
2016-04-20 15:19 900http://my.oschina.net/githubhty ... -
Java编程中使用正则表达式过滤非数字字符串
2016-04-14 13:51 1726/** * * @param str ... -
非对称加密DH算法,DH代码实现
2016-04-13 11:33 1364RSA算法原理(一)http:// ... -
企业支付宝账号开发接口教程
2016-03-31 14:52 1247企业支付宝账号开发接口教程--JAVA-UTF-8(实际操作- ... -
java double类型数据操作工具类
2016-03-28 17:36 1253http://my.oschina.net/yxwblog/b ... -
double转换到BigDecimal
2016-03-28 17:11 1557BigDecimal b = new BigDecimal(d ... -
Java 生成好看的验证码
2016-03-23 10:52 3371http://www.oschina.net/code/sni ... -
Linux环境安装配置Swftools
2016-03-22 21:01 1112http://tetop.blog.51cto.com/188 ... -
java压缩与解压缩文件
2016-03-20 22:03 1475http://www.oschina.net/code/sni ... -
java图像压缩
2016-03-19 23:20 959http://my.oschina.net/686991/bl ...
相关推荐
在实际应用中,JProgressBar与Ajax技术相结合,可以实时显示文件上传的进度。Ajax允许在不刷新整个页面的情况下与服务器交换数据并更新部分网页内容。当用户选择文件并开始上传时,JavaScript会监听文件的读取和发送...
本篇文章将详细探讨如何在Java中使用带线程的`JProgressBar`。 首先,`JProgressBar`的创建非常简单。你可以通过`javax.swing.JProgressBar`类的构造函数来实例化一个进度条,例如: ```java JProgressBar ...
这个是关于java中Frame中JProgressBar进度条的使用,一个弹窗小案例,希望大家喜欢
总结来说,这个实验旨在帮助开发者深入理解Java多线程的概念,熟练运用`Thread`类的`run`和`start`方法,以及如何通过进度条来实时展示多线程任务的执行进度。通过实践,开发者可以更好地掌握并发编程的技巧,这对于...
在Java编程语言中,多线程是并发编程的基础,它允许程序同时执行多个任务,从而提高了效率和响应性。本文将详细阐述Java中实现多线程的三种主要方法:继承Thread类、实现Runnable接口以及实现Callable接口。 1. ...
4. 在主线程中,定期检查所有下载线程的进度,使用`JProgressBar.setValue()`更新进度条。 5. 当所有线程完成下载后,合并各个部分的文件,完成断点续传。 在这个WindowsApplicationTest中,我们可以推测它可能是一...
- 添加组件:添加`JProgressBar`显示下载进度,`JButton`启动和暂停下载,以及其他控件如`JLabel`显示文件信息。 - 监听事件:通过`ActionListener`监听按钮事件,启动或暂停下载。 3. **下载逻辑** - 文件分块...
在GUI环境下,可以使用JProgressBar组件来创建可视化进度条,通过改变进度条的值来反映赛马的进度。 在实现过程中,需要注意线程同步问题。例如,当一匹马到达终点时,我们需要确保其他马不会同时到达,这就需要...
在本项目中,NetBeans被用来构建用户界面,这可能包含了JFrame、JButton、JProgressBar等组件,以展示下载进度和提供操作控制。 多线程下载的核心在于如何有效地协调各个线程的下载进度,并将它们合并成完整的文件...
考虑到“java swing upload demo”可能涉及多线程处理,为了不阻塞用户界面,文件上传操作可能会在后台线程(例如使用SwingWorker)中执行。这样,即使上传过程耗时较长,用户仍然可以继续与应用程序交互。 在项目...
博文链接:https://jacky68147527.iteye.com/blog/250401
这需要保存已下载部分的信息,并在重新启动下载时加载这些信息。 通过以上这些技术点,我们可以构建出一个具有界面、显示下载完成百分比的多线程下载工具。这个工具不仅提高了下载效率,还能提供良好的用户体验。...
Java Swing多线程下载器是一种利用Java Swing库构建的图形用户界面(GUI)应用程序,它具备多线程下载功能,并支持断点续传。这样的工具类似于我们熟知的迅雷下载管理器,允许用户同时下载多个文件,提高下载速度,...
摘要:脚本资源,jQuery,JProgressBar,Js进度条 JProgressBar 1.0加载进度条演示Demo文件,关于JProgressBar类的用法: * 创建一个进度条 * @param {Object} config 配置 * id : {String}, 进度条的ID,默认会...
这篇博客文章“swing进度条demo”很可能是分享了一个关于如何在Java应用中使用Swing JProgressBar的实例代码。 在Swing中,JProgressBar可以有两种模式:连续(Continuous)和离散(Discrete)。连续模式通常用于...
日志是程序运行过程中记录的信息,包括错误、警告、调试信息等。实时读取日志对于跟踪程序状态和解决问题非常关键。有几种常见的方法可以实现实时读取: 1. **使用FileInputStream和BufferedReader**:创建一个`...
例如,你可以用JButton来触发下载操作,用JProgressBar来实时显示下载进度。Swing是线程安全的,这意味着它设计时考虑到了多线程环境,但为了防止UI更新与业务逻辑混淆,通常推荐使用Event Dispatch Thread (EDT) 来...
JProgressBar是Swing库提供的一个用于显示进度的组件。它可以在图形界面中展示任务执行的进度,让用户了解任务的完成程度。
在 Swing 中,所有的 GUI 组件都是线程不安全的,包括 JButton、JTextField、JProgressBar 等。这些组件只能从 EDT 访问,而不能从其他线程访问。 在上面的代码中,我们使用了一个循环来更新进度条和输入框,但是这...