使用Timer为界面执行异步任务
来源:互联网 发布:视频剪裁软件 编辑:程序博客网 时间:2024/06/04 01:19
-------------------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 TestTimerextends JFrame {
private JPanel contentPane;
//定义 value,初始值为 0
int value=0;
/**
* Launch the application.
*/
public staticvoid main(String[] args) {
EventQueue.invokeLater(new Runnable() {
publicvoid 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%
* 10秒钟后,增加到 100% (注:1000毫秒=1秒)
*/
btnRun.addMouseListener(new MouseAdapter() {
@Override
publicvoid 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
publicvoid actionPerformed(ActionEvent e) {
value+=10;
progressBar.setValue(value);
//进度条读满后,重置为 0
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】
- 使用Timer为界面执行异步任务
- 使用SwingWorker为界面执行异步任务
- C#使用Timer 执行后台任务
- 使用ScheduledThreadPoolExecutor替换Timer执行定时任务
- Android中使用Handler和异步任务(AsyncTack)来为UI线程执行费时操作
- 使用GCD异步和同步执行任务
- 多任务异步执行dispatch_group_async的使用
- Android使用IntentService执行异步任务
- Java Timer定时器执行任务
- Android中AsyncTask(异步执行任务)的使用
- 用java.util.Timer定时执行任务
- 用java.util.Timer定时执行任务
- java关于Timer schedule执行定时任务
- 用java.util.Timer定时执行任务
- java 中 Timer 定时执行任务
- 用java.util.Timer定时执行任务
- java关于Timer schedule执行定时任务
- Java中周期性任务执行--Timer
- Android界面开发设计小谈
- java中的static(包括类前面修饰的static、方法前面修饰的static、成员变量前面修饰的static)
- WPF多线程UI更新——两种方法
- 将AS项目托管到github上
- Android之String.Firmat()使用
- 使用Timer为界面执行异步任务
- mongoengine 支持 sessions使用
- abcdCode代码生成器demo
- mysql 5.7 unknown variable 'log_slow_queries=/var/log/mysql/mysql-slow.log'
- ubuntu 安装mysql 5.7.17
- 深入理解 typedef 与 #define
- Nginx简单入门
- 个人感觉比较好的博客收集索引
- 解决Maven关于本地jar包的打包处理