java-swing-高级组件初步-计时器(timer)

今天看了一下 Timer类 ,大概了解了其用法,就是不断重复响应动作事件,两次事件之间响应的时间差间隔是一样的。
先看一下它的一个构造方法来进行解释:

public Timer(long delay,Listener l)

第一个参数是设置 两次事件响应的时间间隔,第二个参数是,需要重复响应的事件(监听者)。
另外,在创建一个Timer对象后,可以单独重新设置延迟间隔(两次事件响应之间时间差),也可以添加其他的(事件)监听者。

下面是它的一些方法:

方法名称 说明
addActionListener(ActionListener 1) 将一个动作监听器添加到 Timer
getDelay() 返回两次触发动作事件间延迟,以毫秒为单位
isCoalesce() 如果 Timer 组合多个挂起的动作事件,则返回 true
isRunning() 如果 Timer 正在运行,则返回 true
restart() 重新启动 Timer,取消所有挂起的触发并使它按初始延迟触发
setCoalesce(boolean flag) 设置 Timer 是否组合多个挂起的 ActionEvent
setDelay(int delay) 设置 Timer 的事件间延迟,两次连续的动作事件之间的毫秒数
setLogTimers(boolean flag) 启用/禁用计时器日志
setRepeats(boolean flag) 如果 flag 为 false,则指示 Timer 只向其监听器发送一次动作事件
start() 启动 Timer,使它开始向其监听器发送动作事件
stop() 停止 Timer,使它停止向其监听器发送动作事件

在前面写进度条的一篇中,进度条动态的实现是使用的for循环来完成的,现在,使用Timer类创建的计时器组件,通过不断重复响应事件,完成进度条的动态的实现。

需要导入的类:

import javax.swing.Timer;
//在这里,还需要导入一个事件监听类
import java.awt.event.ActionEvent;  //动作事件用于响应按钮
import java.awt.event.ActionListener;

创建进度条:

JProgressBar jprogressBar1 = new JProgressBar(0,100);  //创建进度条

下面是重点

创建动作事件监听者类,继承ActionListener接口,重写actionPerformed方法

class myactionlistener implements ActionListener
{
	//创建一个计时器,时间间隔50毫秒,添加当前的动作事件监听者 		myactionlistener类
	Timer timer1 = new Timer(50,this);
	@Override
	public void actionPerformed(ActionEvent e)
	{
		if(e.getSource() == jbutton1) //在完整代码中创建的一个按钮,当点击这个按钮时,就启动计时器
		{
			timer1.start();    //启动计时器
		}
		int value = jprogressBar1.getValue();  //获取进度条当前值
	        	
	    if(value < 100)
	    {
			jprogressBar1.setValue(++value);  //更新值,让值+1
		}
		else
		{
			timer1.stop();  //如果进度条的值到了100,就停止计时器
		}
	}
}

下面是完整的代码:

import javax.swing.JFrame;  //窗口
import javax.swing.JPanel; //中间容器
import javax.swing.JButton;  //按钮
import java.awt.event.ActionEvent;//动作事件
import java.awt.event.ActionListener;
import javax.swing.JProgressBar; //进度条
import javax.swing.Timer; //计时器

public class text_Timer
{
	public static void main(String[] args) 
	{
		JFrame jframe = new JFrame("计时器");//窗口
		JPanel jpanel1 = new JPanel(); 		 //面板
		JButton jbutton1 = new JButton("开始");    //按钮
		JProgressBar jprogressBar1 = new JProgressBar();  //进度条
		//创建动作监听者类
		class myactionlistener implements ActionListener
		{
			Timer timer1 = new Timer(50,this);
			@Override
	        public void actionPerformed(ActionEvent e)
	        {
	        	if(e.getSource() == jbutton1)
	        	{
	        		timer1.start();
	        	}
	        	int value = jprogressBar1.getValue();
	        	
	        	if(value < 100)
	        	{
	        		jprogressBar1.setValue(++value);
	        	}
	        	else
	        	{
	        		timer1.stop();
	        	}
	        }
		}
		jbutton1.addActionListener(new myactionlistener());//按钮添加监听者
		jframe.setSize(250, 150);   //设置窗口大小
		//添加
		jpanel1.add(jbutton1);
		jpanel1.add(jprogressBar1);
		jframe.add(jpanel1);

		jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置关闭时操作
		jframe.setVisible(true);   //设置可见
	}
}

最后的运行结果:

你可能感兴趣的:(swing)