国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

如何使用JFrame完成動態模擬時鐘

2019-11-26 15:01:56
字體:
來源:轉載
供稿:網友

這篇文章介紹了使用JFrame完成動態模擬時鐘,在面板中繪制時鐘并提取系統當前時刻,主方法中暫停線程1秒,刷新面板。

實現代碼如下

import javax.swing.*;import java.awt.*;import java.util.*;import java.lang.Thread;import java.text.DecimalFormat; public class StillClock extends JPanel {   /**   * @param args   */  private int hour;  private int minute;  private int second;     //構造函數  public StillClock() {    setCurrentTime();  }   //返回小時  public int getHour() {    return hour;  }        public int getMinute() {    return minute;  }           public int getSecond() {    return second;  }        //繪制時鐘  protected void paintComponent(Graphics g) {         super.paintComponent(g);    //初始化    int clockRadius = (int)(Math.min(getWidth(), getHeight()) * 0.8 * 0.5);    int xCenter = getWidth() / 2;    int yCenter = getHeight() / 2;    //畫圓    g.setColor(Color.black);    g.drawOval(xCenter - clockRadius, yCenter - clockRadius, 2 * clockRadius, 2 * clockRadius);    g.drawString("12", xCenter - 5, yCenter - clockRadius + 15);    g.drawString("9", xCenter - clockRadius + 3, yCenter + 5);    g.drawString("3", xCenter + clockRadius - 10, yCenter + 3);    g.drawString("6", xCenter - 3, yCenter + clockRadius - 3);    //畫秒針    int sLength = (int)(clockRadius * 0.8);    int xSecond = (int)(xCenter + sLength * Math.sin(second * (2 * Math.PI / 60)));    int ySecond = (int)(yCenter - sLength * Math.cos(second * (2 * Math.PI / 60)));         g.setColor(Color.red);    g.drawLine(xCenter, yCenter, xSecond, ySecond);         //畫分針    int mLenth = (int)(clockRadius * 0.65);    int xMinute = (int)(xCenter + mLenth * Math.sin(minute * (2 * Math.PI / 60)));    int yMinute = (int)(xCenter - mLenth * Math.cos(minute * (2 * Math.PI / 60)));    g.setColor(Color.blue);    g.drawLine(xCenter, yCenter, xMinute, yMinute);         //畫時針    int hLength = (int)(clockRadius * 0.5);    int xHour = (int)(xCenter + hLength * Math.sin((hour % 12 + minute / 60.0) * (2 * Math.PI / 12)));    int yHour = (int)(yCenter - hLength * Math.cos((hour % 12 + minute / 60.0) * (2 * Math.PI / 12)));    g.setColor(Color.green);    g.drawLine(xCenter, yCenter, xHour, yHour);         //畫數字時鐘    g.setColor(Color.black);    DecimalFormat s=new DecimalFormat("00");    g.drawString(s.format(getHour()) + ":" + s.format(getMinute()) + ":" + s.format(getSecond()), xCenter - 22, yCenter - clockRadius - 15);       }     public void setCurrentTime() {    Calendar calendar = new GregorianCalendar();         this.hour = calendar.get(Calendar.HOUR_OF_DAY);    this.minute = calendar.get(Calendar.MINUTE);    this.second = calendar.get(Calendar.SECOND);  }        public static void main(String[] args) {    // TODO Auto-generated method stub    JFrame frame = new JFrame("DiaplayClock");        frame.setResizable(false);    frame.setTitle("DiaplayClock");    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    frame.setSize(300,350);    frame.setVisible(true);         while(true) {      StillClock clock = new StillClock();      frame.getContentPane().add(clock);      clock.setVisible(true);      frame.validate();      try {        Thread.sleep(1000);               }      catch (InterruptedException e) {        e.printStackTrace();       }      clock.setVisible(false);      frame.remove(clock);      clock = null;      frame.validate();           }   }}

效果圖:

以上就是本文的全部內容,希望大家可以喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 安泽县| 蓬溪县| 朝阳市| 嘉祥县| 万山特区| 永吉县| 含山县| 铅山县| 淮北市| 郸城县| 阿克苏市| 石河子市| 阿拉善盟| 山东| 南雄市| 浙江省| 三亚市| 如皋市| 阿克| 河间市| 奇台县| 临清市| 诸暨市| 垣曲县| 长泰县| 青冈县| 建阳市| 金平| 博白县| 启东市| 石门县| 万年县| 惠水县| 马公市| 娄烦县| 延庆县| 株洲县| 宾川县| 会同县| 孟津县| 郴州市|