北京北大青鸟通州校区提供:
import java.awt.*;
import javax.swing.*;
import java.util.Calendar;
public class AccpClock extends JFrame implements Runnable {
Thread clock;
public AccpClock() {
super("通州北大青鸟,java多线程数字时钟");
//设置时钟标题
setTitle("ACCP数字时钟");
//设置时钟字体类型及大小
this.setFont(new Font("Times New Roman", Font.BOLD, 60)); // 设置字体大小
//自定义go方法,用于以后开启线程
this.go();
//设置时钟界面大小
setBounds(400, 300, 280, 100);
//设置时钟为可见
this.setVisible(true);
}
public void go() {
stop();
if (clock == null) {
// 线程执行的主题作为Thread类构造方法的参数。
clock = new Thread(this);
// 开启线程,实现run方法
clock.start();
}
}
public void run() {
// 死循环,让时钟一直走
while (true)
{
//repain()方法是来控制Graphics类的paint()方法的,repain()方法执行一次,即让paint()方法执行一次
repaint();
try {
//参数是毫秒,1秒即1000毫秒
Thread.sleep(1000);
} catch (InterruptedException e) {
}
}
}
public void stop() {
clock = null;
}
public void paint(Graphics g) {
String s = "";
//获取日历对象
Calendar cale = Calendar.getInstance();
//获取当前小时
int hour = cale.get(Calendar.HOUR_OF_DAY) ;
//获取当前分钟
int minute = cale.get(Calendar.MINUTE);
//获取当前秒数
int second = cale.get(Calendar.SECOND);
//格式化输出当前时间
String now = String.format("%1$02d:%2$02d:%3$02d", hour,minute,second);
//设置背景颜色为绿色
g.setColor(Color.green);
Dimension dim = getSize();
g.fillRect(0, 0, dim.width, dim.height);
g.setColor(Color.red);
g.drawString(now, 20, 80);
}
//Main方法,运行时钟
public static void main(String[] args) {
AccpClock td = new AccpClock();
//点击可见窗口右上角的按钮关闭
td.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}