// 重新设置背景图像该象素点的颜色
bufferedImage.setRGB(i, j, newpix);
}
}
/** 以上画背景操作都是画在bufferedImage上的,这里要将bufferedImage画在ClockLabel **/
// 将当前用户剪贴区 Clip 与椭圆区域相交,并将 Clip 设置为所得的交集
g.clip(new Ellipse2D.Double(95, 45, imageSize, imageSize));
g.setColor(Color.white);
// 在用户剪贴区画bufferedImage
g.drawImage(bufferedImage, 95, 45, this);
}
public void run()
{
try
{
//
while (clockThread != null)
{
// 获得完整的日期格式
DateFormat df = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL);
// 格式化当前时间
String s = df.format(new Date());
timeLabel.setText(s);
// 每动一次对时钟指针的角度进行调整
arcSec += 6;
arcMin += 0.1;
arcHour += 0.1 / 60;
// 当角度满一圈时,归0
if (arcSec = 360)
{
arcSec = 0;
}
if (arcMin = 360)
{
arcMin = 0;
}
if (arcHour = 360)
{
arcHour = 0;
}
// 实现背景透明度渐变
// 从浅入深,再由深入浅 。
if (flag)
{
alpha += 10;
if (alpha == 50)
{
flag = !flag;
}
}
else
{
alpha -= 10;
if (alpha == 0)
{
flag = !flag;
// 当透明度变化一个轮回时 , 换一张背景图
imageID++;
if (imageID == 4)
{
imageID = 0;
}
}
}
// 重画时钟标签
repaint();
// 等待1秒钟
Thread.sleep(1000);
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
}
JAVA画时钟代码import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import sun.util.calendar.Gregorian;
import java.util.Calendar;
import java.util.GregorianCalendar;
public class ClockPointer extends JFrame{
int x, y, x0, y0, r, h, olds_x, olds_y, oldm_x, oldm_y, oldh_x, oldh_y,
ss,mm, hh, old_m, old_h, ang;
final double RAD = Math.PI/180;
public ClockPointer(){
super("Java时钟");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Image image = getToolkit().getImage("clock.gif");
setIconImage(image);
setSize(400,400);
setBackground(Color.white);
//setLocation(300,150);
this.setLocationRelativeTo(null);
setResizable(true);
int delay = 1000;
//创建一个监听事件
setVisible(true);
ActionListener drawClock = new ActionListener(){
public void actionPerformed(ActionEvent evt){
repaint();
}
};
//创建一个时间计数器,每一秒触发一次
new Timer(delay, drawClock).start();
}
java.text.SimpleDateFormat fmTime = new java.text.SimpleDateFormat("HH:mm:ss");
//绘制图形
public void paint(Graphics g){
super.paint(g);
g.setFont(null);
Graphics2D g2D = (Graphics2D)g;
Insets insets = getInsets();
int L = insets.left/2, T = insets.top/2;
h = getSize().height;
g.setColor(Color.white);
//画圆
g2D.setStroke(new BasicStroke(2.0f));
g.setColor(Color.gray);
g.drawOval(L+40, T+40, h-80, h-80);
r = h/2 - 40;
x0 = 40 + r - 5 + L;
y0 = 40 + r - 5 - T;
ang = 60;
//绘制时钟上的12个字
for(int i = 1;i = 12;i ++){
x = (int)((r+10)*Math.cos(RAD*ang)+x0);
y = (int)((r+10)*Math.sin(RAD*ang)+y0);
g.setColor(Color.black);
g.drawString(""+i, x, h-y);
ang -=30;
}
//获得现在的时间
Calendar now = new GregorianCalendar();
int nowh = now.get(Calendar.HOUR_OF_DAY);
int nowm = now.get(Calendar.MINUTE);
int nows = now.get(Calendar.SECOND);
推荐阅读
- 水浒单机游戏,水浒单机游戏内购破解版
- 设置css背景图不影响其它,设置css背景图不影响其它图片
- 路由器旁有一个6什么情况,路由器旁边有个感叹号是什么意思
- 为什么word页码都一样,word中为什么页码是一样的
- 数据库php增删改 php+mysql增删改查
- sqlserver账号权限,sqlserver用户管理
- 硬盘存储怎么删除文件,硬盘存储怎么删除文件记录
- 源代码id3java的简单介绍
- 正版chatGPT里面样子,cheat chat