2.2.4 Timer类
除了EventQueue的invokeAndWait()与invokeLater()方法外,我们还可以使用Timer类来创建在事件分发线程上执行的动作。Timer提供了一种在预定义的时间之后通知ActionListener的方法。计时器可以重复通知监听吕在,或者是只通知一次。
创建计时器对象
下面是用于创建在ActionListener调用之间指定毫秒时延的Timer的构造器:
-
public Timer(int delay, ActionListener actionListener);
// 1 second interval
Timer timer = new Timer(1000, anActionListener);
使用计时器对象
在创建了Timer对象之后,我们需要启动start()。一旦启动了Timer,ActionListener就会在指定的时间之后得到通知。如果系统繁忙,延时会更长,但绝不会更短。
如果我们需要停止Timer,我们可以调用stop()方法。Timer同时还有一个restart()方法,这个方法会调用stop()与start(),重新启动时延间隔。
为了演示了的需要,列表2-8定义了一个只是简单的输出消息的ActionListener。然后我们创建一个Timer每半秒调用这个监听器。在我们创建计时器之后,我们需要启动这个计时器。
-
/**
*
*/
package swingstudy.ch02;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Timer;
/**
* @author lenovo
*
*/
public class TimerSample {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Runnable runner = new Runnable() {
public void run() {
ActionListener actionListener = new ActionListener() {
public void actionPerformed(ActionEvent event) {
System.out.println("Hello world timer");
}
};
Timer timer = new Timer(500, actionListener);
timer.start();
}
};
EventQueue.invokeLater(runner);
}
}
Timer属性
表2-1列出Timer的六个属性。四个允许我们自定义计时器的行为。running告诉我们计时器是否启动而没有停止,而actionListeners会为我们提供动作监听器列表。
属性名
|
数据类型
|
可访问性
|
actionListeners
|
ActionListener[]
|
只读
|
coalesce
|
boolean
|
读写
|
delay
|
int
|
读写
|
initialDelay
|
int
|
读写
|
repeats
|
boolean
|
读写
|
running
|
boolean
|
只读
|
delay属性与构造函数的参数相同。如果我们改变一个运行计时器的时延,只有已存在的时延超时时才会使用新的时延。
initialDelay属性使得我们在第一次运行之后除了间隔时延以外还可以其他的启动时延。例如,如果我们在前一个小时并不希望执行一件任务,但是我们希望在之后每15分钟执行一次,我们就需要在启动计时器这前修改initialDelay设置。在默认情况下,在构造函数中initialDelay与delay属性设置为相同的设置。
repeats属性默认情况下设置为true,从而重复运行计时器。当设置为false时,计时器只通知动作监听器一次。然而我们需要重新启动restart()计显示器来再次触发监听器。非重复计时器可以用于在触发事件之后发生的一次通知。
coalesce属性允许一个繁忙的系统当已注册的ActionListener对象有新事件需要触发时丢弃还没有发生的通知。在默认情况下,coalesce的值设置为true。这就意味着如果一个计时器每500毫秒运行一次,但是系统十分繁忙且已经有2秒没有响应,计时器只需要发送一条消息,而不需要发送丢失的消息。如果这个属性设置为false,那么就需要发送四条消息。
除了所列出的属性以外,我们还可以用下面的代码来允许日志消息:
-
Timer.setLogTimers(true);
日志消息对于没有可视化元素的动作十分有用,使得我们知道事件的发生。
分享到:
相关推荐
本篇文章将深入探讨Java Swing组件集合,帮助初学者更好地理解和使用这些组件。 首先,Swing 提供了丰富的组件集,包括按钮(JButton)、文本框(JTextField)、标签(JLabel)、复选框(JCheckBox)、单选按钮...
Swing是Java Foundation Classes (JFC)的一部分,提供了丰富的组件集合,用于创建美观且功能强大的图形用户界面。其中,一些常见的Swing控件包括: 1. **JFrame**:作为窗口的基础,它是所有Swing应用的起点。在...
1. **元件多样性**:Swing提供了比AWT更丰富的组件集合,包括树状视图(Treeviews)、图片按钮等,让开发者能创建更为复杂的用户界面。 2. **跨平台一致性**:Swing组件是轻量级的,它们不依赖于底层操作系统,从而...
它提供了丰富的组件集合,使得开发者可以创建复杂的、交互式的用户界面。在Java Swing组件全演示中,我们将深入探讨Swing的核心概念、组件和设计原则。 首先,Swing是基于AWT(Abstract Window Toolkit)的,但提供...
Java Swing 是Java GUI(图形用户界面...总的来说,通过研究这些源代码,开发者不仅可以学习到Swing组件的基本使用,还能了解到组件的定制、交互处理和界面设计的技巧,这对于提升Java桌面应用开发技能是非常有帮助的。
综上所述,"Swing组件大全"不仅涵盖了Swing库中的所有核心组件,还涵盖了数据库操作、Excel文件处理和自定义布局管理,是学习和开发Swing应用的宝贵资源。通过深入理解和实践这些知识点,开发者可以构建出功能强大且...
通过深入学习和实践这个"java swing组件例子",你将能够熟练掌握如何使用Java Swing创建功能丰富的GUI应用程序,理解组件间的交互、事件处理机制以及布局管理的重要性和用法。同时,还能了解到如何通过自定义外观和...
它可能涵盖了Swing组件的定制,如创建自定义外观和行为,以及如何利用模型-视图-控制器(MVC)模式来构建可维护的应用程序。源代码实例可能涉及到Swing的高级组件,如JTable、JTree和JList,以及如何与数据库进行...
Java Swing组件库JIDE是一个强大的开发工具,专为Java开发者设计,用于构建功能丰富的桌面应用程序。JIDE提供了许多预构建的、高度可定制的Swing组件,极大地扩展了标准Java Swing的功能。这个开源项目旨在简化GUI...
Swing组件的一个重要特点是它们支持模型-视图-控制器(MVC)设计模式,使得代码结构更清晰,维护更容易。 1. **JFrame**: JFrame是顶级容器,常用于创建窗口应用程序。你可以添加各种组件到JFrame上,如菜单栏、...
Java Swing 是Java GUI(图形用户界面)开发的重要库,它提供了丰富的组件集合,用于构建桌面应用程序。本资源“Java Swing 组件全演示源代码”包含了Java Swing中的各种组件的完整示例代码,可以帮助开发者深入理解...
它是Java Foundation Classes (JFC) 的一部分,提供了一套丰富的组件集合,用于构建功能完善的用户界面。Swing在早期是为了弥补Java AWT(Abstract Window Toolkit)的不足而设计的,提供了更丰富的功能、更好的可...
在学习和使用Swing组件时,了解每个组件的属性、方法和事件处理机制非常重要。通过实例代码和案例分析,你可以更好地掌握如何创建功能丰富的桌面应用程序。提供的"Swing常用组件"资源很可能是包含各种示例代码的集合...
通过分析这些实例,开发者可以深入理解Swing组件的使用、事件处理机制、自定义绘制方法以及如何将它们结合到实际项目中。这些源码实例为初学者提供了宝贵的实践资料,同时也为经验丰富的开发者提供了灵感和参考。
它们提供了一套丰富的组件集合,使得开发者能够创建功能强大的桌面应用程序。Swing 是 JFC 的一部分,它扩展了 Java AWT(Abstract Window Toolkit)库,提供了更多的功能和更好的性能。 一、JFC 概述: Java ...
总的来说,这个"java使用swing组件编写的简易计算器"项目涵盖了Java GUI编程的基础,包括Swing组件的使用、事件处理、基本计算逻辑实现以及IDE的使用。通过这个项目,开发者可以深入理解Java Swing的原理和实践,...
- **Java Desktop.org**:这个网站提供了大量的Swing组件集合和示例代码,对于开发者来说是一个不错的资源库。 - **ChinaJavaWorld论坛**:这个中文论坛也有关于Swing的讨论和技术交流,适合中文读者。 ### 性能...
在本项目中,“基于Swing组件编写华容道...它不仅展示了Swing组件的使用,还涵盖了图形用户界面设计、事件处理、数据结构以及算法应用等多个IT领域的知识。这样的项目对于学习和提升Java GUI编程能力是非常有价值的。
标题和描述中提到的知识点是关于Java...总结来说,Swing是一个全面的用户界面工具包,它通过Java语言的纯粹性,提供了一套跨平台、模块化的用户界面组件集合。开发者利用Swing可以创建功能强大、界面美观的应用程序。
首先,Swing是Java的标准GUI库,它提供了丰富的组件集合,如按钮、文本框、表格、菜单等,用于构建美观且功能强大的桌面应用。在销售管理系统中,Swing组件可以用来创建用户友好的界面,让用户能够方便地输入、查看...