📄 clock.java
字号:
import javax.swing.*;
import java.awt.geom.*;
import java.awt.*;
public class Clock
{
public static void main(String[] args)
{
BlankFrame frame = new BlankFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
/*定制框架
*/
class BlankFrame extends JFrame
{
private static final int WIDTH = 400;
private static final int HEIGHT = 400;
public BlankFrame()
{
Container con = getContentPane();//得到了内容窗格
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);//设置坐标起点
setSize(WIDTH, HEIGHT);//设置框架的大小
setTitle("Display Clock");
setResizable(true);
StringPanel panel = new StringPanel();//得到定制的面板
con.add(panel);//将面板添加到内容窗格中
}
}
/*制做时钟图形
*/
class StringPanel extends JPanel
{
public void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
g2.setPaint(Color.red);//选择字体颜色
g2.drawString("Hour:0 Minute:0 Second:0",130,300);//在表盘下面写字
double a[]=new double[30];
for(int i=0;i<30;i++)
{
/*绘制小针,以顺时针180和逆时针180绘制
*/
a[i]=i*3.14/30;
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;
double x3=200+X1;
double y3=150-Y1;
double x4=200+X2;
double y4=150-Y2;
Line2D l1=new Line2D.Double(x1,y1,x2,y2);
Line2D l2=new Line2D.Double(x3,y3,x4,y4);
g2.draw(l1);
g2.draw(l2);
if(i%5==0)
{ /*绘制每5分钟的长针,方法同上
*/
double X3=85*Math.sin(a[i]);
double Y3=85*Math.cos(a[i]);
double x5=200-X3;
double y5=150-Y3;
double x6=200-X2;
double y6=150-Y2;
double x7=200+X3;
double y7=150-Y3;
double x8=200+X2;
double y8=150-Y2;
Line2D l3=new Line2D.Double(x5,y5,x6,y6);
Line2D l4=new Line2D.Double(x7,y7,x8,y8);
g2.draw(l3);
g2.draw(l4);
}
Line2D l5=new Line2D.Double(200,250,200,235); //由于象素换算问题。边界不同,单独绘出。
g2.draw(l5);
}
/*绘制时,分,秒针
*/
Line2D l6=new Line2D.Double(200,70,200,85);//绘制秒针,颜色是红色,已经默认
Line2D l7=new Line2D.Double(200,85,200,150);//绘制分针;
Line2D l8=new Line2D.Double(200,100,200,150);//绘制时针;
g2.draw(l6);
g2.setPaint(Color.blue);
g2.draw(l7);
g2.setPaint(Color.green);
g2.draw(l8);
/*绘制圆形
*/
Ellipse2D e=new Ellipse2D.Double(100,50,200,200);
g2.setPaint(Color.black);
g2.draw(e);
/*在4个角写上数字
*/
g2.drawString("12",195,50);
g2.drawString("3",300,150);
g2.drawString("6",195,260);
g2.drawString("9",90,150);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -