Container con = getContentPane();
con.setBackground(Color.white);
con.setLayout(null);
con.add(weekLabel);
con.add(dateLabel);
con.add(remarkLabel);
con.add(timeLabel);
con.add(clockLabel);
}
public static void main(String[] args)
{
Clock clock = new Clock();
clock.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
clock.setVisible(true);
}
// 自定义时钟标签,画一个圆形的时钟
class ClockLabel extends JLabel implements Runnable
{
// 时钟标签的宽度和高度
private final int WIDTH= 500;
private final int HEIGHT= 440;
// 圆形时钟的X半径和Y半径
private final int CIRCLE_X_RADIUS= 150;
private final int CIRCLE_Y_RADIUS= 155;
// 圆形时钟的原点
private final int CIRCLE_X= 250;
private final int CIRCLE_Y= 200;
// 圆形时钟指针的长度
private final int HOUR_LENGTH= 50;
private final int MIN_LENGTH= 80;
private final int SEC_LENGTH= 100;
// 当前时针所处的角度
doublearcHour= 0;
// 当前分针所处的角度
doublearcMin= 0;
// 当前秒针所处的角度
doublearcSec= 0;
// 颜色的透明度,
// 当颜色的alpha值为1或者255时 , 表示不透明,其他值时透明
intalpha= 50;
// 标识颜色透明度变化的方向,
// 为true时表示越来越透明 , 为false时表示月来越不透明
booleanflag= false;
// 背景图片的id,轮换显示背景图片时使用
intimageID= 0;
// 背景图片对象数组
Imageimg[]= new Image[5];
// 背景图片URL
URLurl[]= new URL[] { ClockLabel.class.getResource("image/1.jpg"), ClockLabel.class.getResource("image/2.jpg"), ClockLabel.class.getResource("image/3.jpg"), ClockLabel.class.getResource("image/4.jpg"), ClockLabel.class.getResource("image/5.jpg"), ClockLabel.class.getResource("image/6.jpg") };
// 一个具有缓冲区的图像对象
BufferedImagebufferedImage= null;
intimageSize= 2 * Math.max(CIRCLE_X_RADIUS, CIRCLE_Y_RADIUS);
// 为bufferedImage创建的Graphics对象,用于在bufferedImage上画图
GraphicsbufferedImageGraphics = null;
// 时钟线程,因为时钟每秒钟都要动一次,所以用线程
ThreadclockThread= null;
// 构造方法
public ClockLabel()
{
// 设置时钟标签的大小
this.setSize(WIDTH, HEIGHT);
// 获取时针、分针、秒针当前的角度
arcHour = now.get(Calendar.HOUR) * 30; // 一格30度
arcMin = now.get(Calendar.MINUTE) * 6; // 一格6度
arcSec = now.get(Calendar.SECOND) * 6; // 一个6度
// 根据图片URL创建图片对象
Toolkit tk = this.getToolkit();
img[0] = tk.createImage(url[0]);
img[1] = tk.createImage(url[1]);
img[2] = tk.createImage(url[2]);
img[3] = tk.createImage(url[3]);
img[4] = tk.createImage(url[4]);
try
{
// 使用MediaTracker加载图片对象
// MediaTracker 类是一个跟踪多种媒体对象状态的实用工具类,
// 媒体对象可以包括音频剪辑和图像 , 但目前仅支持图像.
MediaTracker mt = new MediaTracker(this);
mt.addImage(img[0], 0);
mt.addImage(img[1], 0);
mt.addImage(img[2], 0);
mt.addImage(img[3], 0);
mt.addImage(img[4], 0);
// 加载媒体跟踪器中所有的图像 。
mt.waitForAll();
}
catch (Exception e)
{
e.printStackTrace();
}
// 创建一个有缓冲的Image对象
bufferedImage = new BufferedImage(imageSize, imageSize, BufferedImage.TYPE_INT_ARGB);
// 为BufferedImage创建Graphics2D对象 ,
// 以后用该Graphics2D对象画的图都会画在BufferedImage中
bufferedImageGraphics = bufferedImage.createGraphics();
推荐阅读
- 水浒单机游戏,水浒单机游戏内购破解版
- 设置css背景图不影响其它,设置css背景图不影响其它图片
- 路由器旁有一个6什么情况,路由器旁边有个感叹号是什么意思
- 为什么word页码都一样,word中为什么页码是一样的
- 数据库php增删改 php+mysql增删改查
- sqlserver账号权限,sqlserver用户管理
- 硬盘存储怎么删除文件,硬盘存储怎么删除文件记录
- 源代码id3java的简单介绍
- 正版chatGPT里面样子,cheat chat