⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 clock.java

📁 一个时钟图形的JAVA代码.没有用线程进行走时
💻 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 + -