-------------------siwuxie095

 
 

 
 

 
 

 
 

 
 

 
 

工程名:TestSwingTimer

包名:com.siwuxie095.timer

类名:TestTimer.java

 
 

 
 

工程结构目录如下:

 
 

 
 

 
 

 
 

 
 

代码:

 
 

package com.siwuxie095.timer;

 
 

import java.awt.BorderLayout;

import java.awt.EventQueue;

 
 

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.border.EmptyBorder;

 
 

import com.sun.java.swing.plaf.windows.WindowsLookAndFeel;

 
 

import javax.swing.JProgressBar;

import javax.swing.Timer;

import javax.swing.UIManager;

import javax.swing.UnsupportedLookAndFeelException;

import javax.swing.JButton;

 
 

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.MouseAdapter;

import java.awt.event.MouseEvent;

 
 

public class TestTimer extends JFrame {

 
 

private JPanel contentPane;

 

int value=0;

 
 

/**

* Launch the application.

*/

public static
void main(String[] args) {

EventQueue.invokeLater(new Runnable() {

public
void run() {

try {

TestTimer frame = new TestTimer();

frame.setVisible(true);

} catch (Exception e) {

e.printStackTrace();

}

}

});

}

 
 

/**

* Create the frame.

*/

public TestTimer() {

 

try {

UIManager.setLookAndFeel(new WindowsLookAndFeel());

} catch (UnsupportedLookAndFeelException e1) {

e1.printStackTrace();

}

 

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setBounds(100, 100, 450, 300);

contentPane = new JPanel();

contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));

contentPane.setLayout(new BorderLayout(0, 0));

setContentPane(contentPane);

 

JProgressBar progressBar = new JProgressBar();

contentPane.add(progressBar, BorderLayout.NORTH);

 

JButton btnRun = new JButton("Run");

btnRun.setFocusable(false);

 

/**

* 为按钮 Run 添加 mouseClicked 事件

* 鼠标单击按钮Run后,进度条每隔 1 秒增加 10%

毫秒=1秒)

*/

btnRun.addMouseListener(new MouseAdapter() {

@Override

public
void mouseClicked(MouseEvent e) {

/**

* 创建一个 Timer,注意:是 javax.swing 包中的 Timer 类

* 构造方法需要传入两个参数:

* 第一个 delay 延时,以毫秒计,且 timer 所触发的动作需要经过延时才会触发

* 第二个 listener 监听器,传入匿名对象 new ActionListener()

*/

Timer timer=new Timer(1000, new ActionListener() {

 

/**

* 当前 timer 所对应的操作都是在 actionPerformed() 中执行

*

* 当前 timer 的 actionPerformed() 方法一旦被触发,将自动被派发给UI线程,

* 放到UI线程的执行队列中去执行,所以这里面的操作都可以针对当前的UI元素来

* 进行属性的设定,所有操作都是UI线程安全的

*/

 

@Override

public
void actionPerformed(ActionEvent e) {

value+=10;

progressBar.setValue(value);

if (value==100) {

value=0;

}

}

});

 

//将该timer设定为循环执行

timer.setRepeats(true);

//开启timer

timer.start();

 

}

});

contentPane.add(btnRun, BorderLayout.SOUTH);

}

 
 

}

 
 

 
 

 
 

将窗体
JFrame 的 LookAndFeel 设定为 Windows

 
 

 
 

在根面板 contentPane 的上方添加一个 JProgressBar,

下方添加一个
JButton

 
 

 
 

将 JButton 的文本(text)改为 Run,并 Rename 为 btnRun,

将 focusable 属性设为 false

 
 

 
 

为 JButton 添加 mouseClicked 事件,鼠标单击 Run 按钮后,

进度条每隔 1 秒增加 10%,10 秒钟后,增加到 100%,循环

 
 

 
 

 
 

 
 

运行程序:

 
 

 
 

 
 

 
 

 
 

 
 

 
 

【made by siwuxie095】

最新文章

  1. PC分配盘符的时候发现==》RPC盘符不可用
  2. 软件代码生成之Codesmith模板.netTiers
  3. linux shell 报错 Syntax error: Bad for loop variable
  4. 【GOF23设计模式】装饰模式
  5. Another mysql daemon already running with the same unix socket
  6. Why Does Everyone Else Appear to Be Succeeding?
  7. PAT (Basic Level) 1004. 成绩排名 (20)
  8. 功能间(两个form)数据交互的编程方法
  9. ftk学习记(对话框篇)
  10. 为什么重写equals时必须重写hashCode方法?(转发+整理)
  11. Ionic 常用组件解析
  12. PHP防止SQL注入和XSS攻击
  13. 检测dll是32/64位 ?
  14. SpringMVC_第一个程序
  15. salesforce零基础学习(八十七)Apex 中Picklist类型通过Control 字段值获取Dependent List 值
  16. docker简单介绍---部署私有docker仓库Registry
  17. 【mysql】模糊查询的使用
  18. C#实现加简单的Http请求
  19. ubuntu 14.04安装zabbix3.0以及汉化
  20. MySQL 5.6学习笔记(数据类型)

热门文章

  1. swift ! 和 ? 的学习
  2. Python partial function 偏函数
  3. [原创]java WEB学习笔记24:MVC案例完整实践(part 5)---删除操作的设计与实现
  4. iframe弹出层中关闭包含iframe的div(子页面调用父页面js函数)
  5. C#子线程执行完后通知主线程
  6. UI层自动化测试介绍
  7. Oracle--存储过程和自定义函数
  8. Debian for ARM
  9. freeMarker(八)——程序开发指南之配置(Configuration)
  10. ACM学习历程—HDU5586 Sum(动态规划)(BestCoder Round #64 (div.2) 1002)