📄 clock.java
字号:
/**
实验十 时钟
在掌握Java图形绘制的基础上,熟悉填充颜色
@author YangXiaoyan CS0501
*/
import javax.swing.*;
import java.awt.*;
import java.awt.geom.*;
public class Clock
{
public static void main(String[] args)
{
ClockFrame frame = new ClockFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
class ClockFrame extends JFrame
{
private static final int WIDTH = 400;
private static final int HEIGHT = 400;
public ClockFrame()
{
Toolkit kit = Toolkit.getDefaultToolkit();
Dimension screenSize = kit.getScreenSize();
int width = screenSize.width;
int height = screenSize.height;
int x = (width - WIDTH)/2;
int y = (height - HEIGHT)/2;
setLocation(x, y);//设置坐标起点
setTitle("Display Clock");
setSize(WIDTH, HEIGHT);//设置框架的大小
setResizable(true);
ClockPanel panel = new ClockPanel();
add(panel);//将面板添加到内容窗格中
}
}
class ClockPanel extends JPanel
{
public void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
//绘制表盘
Ellipse2D e=new Ellipse2D.Double(100,50,200,200);
g2.setPaint(Color.black);
g2.draw(e);
//绘制数字
g2.drawString("12",195,47);
g2.drawString("3",305,155);
g2.drawString("6",197,265);
g2.drawString("9",90,155);
g2.setPaint(Color.red);//设置颜色为红色
g2.drawString("Hour:0 Minute:0 Second:0",120,300);
double a[]=new double[60];
for(int i=0;i<60;i++)
{
//绘制表盘四周指针
a[i]=i*3.14/30; //一分钟为6°=2π/60
double X1=90*Math.sin(a[i]);//一小格的起点坐标
double Y1=90*Math.cos(a[i]);
double X2=100*Math.sin(a[i]);//一小格的终点坐标
double Y2=100*Math.cos(a[i]);
double x1=200+X1;
double y1=150-Y1;
double x2=200+X2;
double y2=150-Y2;
Line2D line1=new Line2D.Double(x1,y1,x2,y2);
g2.draw(line1);
if(i%5==0)
{ //绘制大针
double X3=85*Math.sin(a[i]);
double Y3=85*Math.cos(a[i]);
double x3=200+X3;
double y3=150-Y3;
double x4=200+X2;
double y4=150-Y2;
Line2D line2=new Line2D.Double(x3,y3,x4,y4);
g2.draw(line2);
}
}
//绘制时,分,秒针
Line2D lhour=new Line2D.Double(200,95,200,150);
g2.setPaint(Color.green);
g2.draw(lhour);
Line2D lmin=new Line2D.Double(200,80,200,95);
g2.setPaint(Color.blue);
g2.draw(lmin);
Line2D lsec=new Line2D.Double(200,70,200,80);
g2.setPaint(Color.red);
g2.draw(lsec);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -