📄 myclock.java
字号:
package MyCalender;/* * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * -Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * -Redistribution in binary form must reproduct the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the distribution. * * Neither the name of Sun Microsystems, Inc. or the names of contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * This software is provided "AS IS," without a warranty of any kind. ALL * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING * ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE * OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS LICENSORS SHALL NOT * BE LIABLE FOR ANY DAMAGES OR LIABILITIES SUFFERED BY LICENSEE AS A RESULT * OF OR RELATING TO USE, MODIFICATION OR DISTRIBUTION OF THE SOFTWARE OR ITS * DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, * INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY * OF LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE SOFTWARE, EVEN * IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. * * You acknowledge that Software is not designed, licensed or intended for * use in the design, construction, operation or maintenance of any nuclear * facility. *//* * @(#)Clock.java 1.12 03/01/23 */import java.util.*;import javax.swing.JButton;import java.awt.*;import java.awt.Color;import java.applet.*;import java.text.*;import javax.swing.JPanel;import javax.swing.JSpinner;/** * Time! * * @author 邱鹏 * @verson 1.0 * @date:2008年4月2日 *****类的作用:绘制时钟****** */public class MyClock extends JPanel implements Runnable { private volatile Thread timer; // The thread that displays clock private int lastxs, lastys, lastxm, lastym, lastxh, lastyh; // Dimensions // used to draw // hands private SimpleDateFormat formatter; // Formats the date displayed private String lastdate; // String to hold date displayed private Font clockFaceFont; // Font for number display on clock private Date currentDate; // Used to get date to display private Color handColor; // Color of main hands and dial private Color numberColor; // Color of second hand and numbers private int xcenter = 80, ycenter = 55; // Center position // -------------------------------------------------------------------------------------------- public MyClock() { super(); setLayout(null); init(); start(); } // -------------------------------------------------------------------------------------------- public void init() { int x, y; lastxs = lastys = lastxm = lastym = lastxh = lastyh = 0; formatter = new SimpleDateFormat("EEE MMM dd hh:mm:ss yyyy", Locale .getDefault()); currentDate = new Date(); lastdate = formatter.format(currentDate); clockFaceFont = new Font("Serif", Font.PLAIN, 14); handColor = Color.blue; numberColor = Color.darkGray; this.setBackground(new Color(128, 128, 192)); resize(300, 300); // Set clock window size } // -------------------------------------------------------------------------------------------- // Paint is the main part of the program public void paint(Graphics g) { // g.clearRect(0,0,this.getWidth(),this.getHeight()); paintMe(g); int xh, yh, xm, ym, xs, ys; int s = 0, m = 10, h = 10; String today; Calendar c = Calendar.getInstance(); currentDate = new Date(); s = c.get(Calendar.SECOND); m = c.get(Calendar.MINUTE); h = c.get(Calendar.HOUR); // Set position of the ends of the hands xs = (int) (Math.cos(s * Math.PI / 30 - Math.PI / 2) * 45 + xcenter); ys = (int) (Math.sin(s * Math.PI / 30 - Math.PI / 2) * 45 + ycenter); xm = (int) (Math.cos(m * Math.PI / 30 - Math.PI / 2) * 40 + xcenter); ym = (int) (Math.sin(m * Math.PI / 30 - Math.PI / 2) * 40 + ycenter); xh = (int) (Math.cos((h * 30 + m / 2) * Math.PI / 180 - Math.PI / 2) * 30 + xcenter); yh = (int) (Math.sin((h * 30 + m / 2) * Math.PI / 180 - Math.PI / 2) * 30 + ycenter); // Get the date to print at the bottom formatter.applyPattern("EEE MMM dd HH:mm:ss yyyy"); today = formatter.format(currentDate); g.setFont(clockFaceFont); // Erase if necessary g.setColor(getBackground()); if (xs != lastxs || ys != lastys) { g.drawLine(xcenter, ycenter, lastxs, lastys); g.drawString(lastdate, 5, 125); } if (xm != lastxm || ym != lastym) { g.drawLine(xcenter, ycenter - 1, lastxm, lastym); g.drawLine(xcenter - 1, ycenter, lastxm, lastym); } if (xh != lastxh || yh != lastyh) { g.drawLine(xcenter, ycenter - 1, lastxh, lastyh); g.drawLine(xcenter - 1, ycenter, lastxh, lastyh); } // Draw date and hands g.setColor(numberColor); g.drawString(today, 140, 50); g.drawLine(xcenter, ycenter, xs, ys); g.setColor(handColor); g.drawLine(xcenter, ycenter - 1, xm, ym); g.drawLine(xcenter - 1, ycenter, xm, ym); g.drawLine(xcenter, ycenter - 1, xh, yh); g.drawLine(xcenter - 1, ycenter, xh, yh); lastxs = xs; lastys = ys; lastxm = xm; lastym = ym; lastxh = xh; lastyh = yh; lastdate = today; } // -------------------------------------------------------------------------------------------- public void paintMe(Graphics g) { g.clearRect(0, 0, this.getWidth(), this.getHeight()); g.setFont(clockFaceFont); // 绘制圆形和数字 g.setColor(Color.WHITE); g.fillOval(xcenter - 50, ycenter, 9, 3); g.fillOval( xcenter + 40, ycenter,9,3); g.fillOval(xcenter , ycenter - 44,3,9); g.fillOval( xcenter , ycenter + 42,3,9); g.setColor(handColor); g.drawArc(xcenter - 50, ycenter - 50, 100, 100, 0, 360); g.setColor(numberColor); g.drawString("9", xcenter - 45, ycenter + 3); g.drawString("3", xcenter + 40, ycenter + 3); g.drawString("12", xcenter - 5, ycenter - 37); g.drawString("6", xcenter - 3, ycenter + 45); // Draw date and hands g.setColor(numberColor); g.drawString(lastdate, 5, 125); g.drawLine(xcenter, ycenter, lastxs, lastys); g.setColor(handColor); g.drawLine(xcenter, ycenter - 1, lastxm, lastym); g.drawLine(xcenter - 1, ycenter, lastxm, lastym); g.drawLine(xcenter, ycenter - 1, lastxh, lastyh); g.drawLine(xcenter - 1, ycenter, lastxh, lastyh); } // -------------------------------------------------------------------------------------------- public void start() { timer = new Thread(this); timer.start(); } // -------------------------------------------------------------------------------------------- public void stop() { timer = null; } // -------------------------------------------------------------------------------------------- public void run() { Thread me = Thread.currentThread(); while (timer == me) { try { Thread.currentThread().sleep(100); } catch (InterruptedException e) { } // repaint(); update(this.getGraphics()); } } // --------------------------------------------------------------------------------------------}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -