定时器有时候是很有用的,例如那种限时的抢答题目或者游戏抽奖都是有时间限制的,接下来要学习一下最简单的计时器使用。
我是只做了一个面板,然后定时改变面板里面的内容,很简单的。
package Class1;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
//import java.util.Timer;
import javax.swing.*;
public class Dingshi extends JFrame {
Stars s;
Dingshi()
{
s=new Stars();
this.add(s);
this.setTitle("xingxisng");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(300,200);
this.setVisible(true);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Dingshi ds=new Dingshi();
}
}
class Stars extends JPanel {
int x=10;
int y=10;
int delay=100;
Timer t1;
public Stars(){
super();
this.setBackground(Color.BLACK);
t1=new Timer(delay,task);
t1.start();
}
public void paint(Graphics g)
{
super.paint(g);
g.setColor(Color.GREEN);
g.drawOval(x, y, 7, 10);
g.setColor(Color.WHITE);
g.fillOval(x+30, y+50, 3,10);
}
ActionListener task=new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
x=(int) (Math.random()*200);
y=(int)(Math.random()*100);
repaint();
}
};
}
顺便也把效果图片贴一下吧:
上面图中的绿色小圆圈和白点会随机在框内出现,他们的坐标主要是看task里面,设置了随机数的产生。
还有一种方法实现定时器的,那就是继承Timertask,实现runable接口,下面演示一下:
package Class1;
import java.util.Timer;
import java.util.TimerTask;
public class Dingshi2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int dl=5000;//延迟时间,即延迟五秒才开始执行任务
Timer t=new Timer();
abc task=new abc();
//for(int i=0;i<10;i++)
t.scheduleAtFixedRate(task, dl,1000);//这里是每隔1秒执行一次task
}
}
class abc extends TimerTask implements Runnable{
public void run() {//重写run方法,这里是输出一句话“I love you @!"
// TODO Auto-generated method stub
System.out.println("I love you @!");
}
}
效果图也贴上来吧:
之前还做过一个时钟表的,篇幅有限,就没贴上来了。在这里主要是想总结一下之前学过的东西,巩固一下,及时以后忘了,也可以在博客上看到这些资料,希望大家学完之后也多做总结,最好写成博客,供大家分享一下。