/**
@version 1.20 1999-04-27
@author Cay Horstmann
*/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import javax.swing.Timer;
/**
This class shows a frame with several clocks that
are updated by a timer thread.
*/
public class TimerTest
{
public static void main(String[] args)
{
TimerTestFrame frame = new TimerTestFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
}
}
/**
The frame holding the clocks.
*/
class TimerTestFrame extends JFrame
{
public TimerTestFrame()
{
setTitle("TimerTest");
setSize(WIDTH, HEIGHT);
Container c = getContentPane();
c.setLayout(new GridLayout(2, 3));
c.add(new ClockCanvas("America/Los_Angeles"));
c.add(new ClockCanvas("America/New_York"));
c.add(new ClockCanvas("America/Caracas"));
c.add(new ClockCanvas("Europe/Rome"));
c.add(new ClockCanvas("Africa/Cairo"));
c.add(new ClockCanvas("Asia/Taipei"));
}
public static final int WIDTH = 450;
public static final int HEIGHT = 300;
}
/**
The canvas to display a clock that is updated by a timer.
*/
class ClockCanvas extends JPanel
{
/**
Constructs a clock canvas.
@param tz the time zone string
*/
public ClockCanvas(String tz)
{
zone = tz;
calendar = new GregorianCalendar(TimeZone.getTimeZone(tz));
Timer t = new Timer(1000, new
ActionListener()
{
public void actionPerformed(ActionEvent event)
{
calendar.setTime(new Date());
repaint();
}
});
t.start();
setSize(WIDTH, HEIGHT);
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.drawOval(0, 0, 100, 100);
int seconds = calendar.get(Calendar.HOUR) * 60 * 60
+ calendar.get(Calendar.MINUTE) * 60
+ calendar.get(Calendar.SECOND);
double hourAngle = 2 * Math.PI
* (seconds - 3 * 60 * 60) / (12 * 60 * 60);
double minuteAngle = 2 * Math.PI
* (seconds - 15 * 60) / (60 * 60);
double secondAngle = 2 * Math.PI
* (seconds - 15) / 60;
g.drawLine(50, 50, 50 + (int)(30
* Math.cos(hourAngle)),
50 + (int)(30 * Math.sin(hourAngle)));
g.drawLine(50, 50, 50 + (int)(40
* Math.cos(minuteAngle)),
50 + (int)(40 * Math.sin(minuteAngle)));
g.drawLine(50, 50, 50 + (int)(45
* Math.cos(secondAngle)),
50 + (int)(45 * Math.sin(secondAngle)));
g.drawString(zone, 0, 115);
}
private String zone;
private GregorianCalendar calendar;
public static final int WIDTH = 125;
public static final int HEIGHT = 125;
}
TTest.rar_ttest
版权申诉
4 浏览量
2022-09-22
16:48:32
上传
评论
收藏 4KB RAR 举报
小波思基
- 粉丝: 72
- 资源: 1万+
最新资源
- 基于Matlab人脸肤色定理的教师人数统计+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于Matlab霍夫曼变换的表盘读数识别+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于Matlab火灾烟雾检测源码带GUI界面+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于Matlab的恶劣天气交通标志识别系统+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于MATLAB的霍夫曼变换的表盘示数识别+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于Matlab的车道线识别系统 +源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于MATLAB的教室人数统计系统带Gui界面+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于MATLAB的教室人数统计系统带Gui界面+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于MATLAB 的霍夫曼变换答题卡识别源码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于Matlab+bp神经网络的神经网络汉字识别系统+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈